querySelector 的 jQuery 等价物是什么?到目前为止,我发现的唯一方法是选择所有然后选择第一个选择:
$(selectorString)[0]
使用上面的表达式,jQuery 是否足够聪明,可以在找到第一个匹配项后停止?
更新:@Mutnowski 建议使用 eq() 和 first,但是在阅读 jQuery 文档之后,这两种方法似乎有相同的缺点:jQuery 将首先获取所有匹配项,然后只过滤掉第一个元素。
querySelector 的 jQuery 等价物是什么?到目前为止,我发现的唯一方法是选择所有然后选择第一个选择:
$(selectorString)[0]
使用上面的表达式,jQuery 是否足够聪明,可以在找到第一个匹配项后停止?
更新:@Mutnowski 建议使用 eq() 和 first,但是在阅读 jQuery 文档之后,这两种方法似乎有相同的缺点:jQuery 将首先获取所有匹配项,然后只过滤掉第一个元素。
您希望 .eq(index) 获取索引
$("td").eq(2)
$("td:eq(2)")
如果您只想第一次使用 .first()
$("tr").first()
$("tr:first")
因此,在 jQuery 或我看过的其他库中似乎没有等效的 querySelector。
解决方法是选择所有匹配的元素(相当于 querySelectorAll),然后过滤掉第一个。这可以使用 [0] (返回一个 html 节点)或 @Mutnowski 使用 eq(0) 或 first (返回一个 jQuery 对象)来完成。
你可以写一个简单的插件(兼容性说明)
$.fn.firstMatch = function(sel) {
var len = this.length;
if (!len) return this;
for(var i = 0; i < len; i++){
var match = this[i].querySelector(sel);
if (match) return $(match);
}
return $();
}