querySelector的jQuery等价物是什么?到目前为止我找到的唯一方法是选择所有选择然后选择第一个选择:
$(selectorString)[0]
使用上面的表达式,jQuery是否足够聪明,可以在找到第一个匹配后停止?
更新:@Mutnowski建议首先使用eq(),但在阅读jQuery文档之后,这两种方法似乎也有同样的缺点:jQuery将首先获得所有匹配,然后只过滤掉第一个元素。
答案 0 :(得分:6)
您希望.eq(index)获取索引
$("td").eq(2)
$("td:eq(2)")
如果您只想第一次使用.first()
$("tr").first()
$("tr:first")
答案 1 :(得分:2)
所以似乎jQuery或我看过的其他库中没有querySelector的等价物。
解决方法是选择所有匹配的元素(相当于querySelectorAll),然后过滤掉第一个元素。这可以使用[0](返回一个html节点)或@Mutnowski建议用eq(0)或第一个(返回一个jQuery对象)来完成。
答案 2 :(得分:0)
你可以写一个简单的插件(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 $();
}