什么是querySelector的jQuery等价物?到目前为止,我发现的唯一方法是选择所有然后选择第一个选择:jQuery等价于querySelector
$(selectorString)[0]
通过上述表达,是jQuery的足够聪明,不要再找后的首场比赛?
更新:@Mutnowski建议使用eq()和第一个,但在阅读jQuery文档后,这两个方法似乎有相同的缺点:jQuery将首先获得所有匹配,然后只滤出第一个元素。
什么是querySelector的jQuery等价物?到目前为止,我发现的唯一方法是选择所有然后选择第一个选择:jQuery等价于querySelector
$(selectorString)[0]
通过上述表达,是jQuery的足够聪明,不要再找后的首场比赛?
更新:@Mutnowski建议使用eq()和第一个,但在阅读jQuery文档后,这两个方法似乎有相同的缺点:jQuery将首先获得所有匹配,然后只滤出第一个元素。
所以看起来在jQuery或i中没有相当于querySelector我看过的其他图书馆。
解决方法是选择所有匹配的元素(相当于querySelectorAll),然后过滤出第一个。这可以使用[0](返回一个html节点)或按照@Mutnowski与eq(0)或第一个(返回一个jQuery对象)的建议完成。
你想.EQ(指数)如果你只想在第一次使用。首先(获得索引
$("td").eq(2)
$("td:eq(2)")
)
$("tr").first()
$("tr:first")
Thx。在我看来,jQuery首先选择所有匹配,然后才应用过滤器。正确? – Christophe 2012-04-03 19:12:59
@Christophe:正确。 – BoltClock 2012-04-15 19:45:29
你可以写一个简单的插件(compatibility notes)
$.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 $();
}
需要注意的是“情商”是不是一个CSS选择器,这是一个jQuery的实现。所以为了获得最好的性能,最好写'$(“td”)。eq(2)'而不是'$(“td:eq(2)”)' – Killy 2017-11-16 08:17:24