jQuery相当于querySelector

时间:2012-04-03 18:50:11

标签: javascript jquery jquery-selectors selectors-api

querySelector的jQuery等价物是什么?到目前为止我找到的唯一方法是选择所有选择然后选择第一个选择:

$(selectorString)[0]

使用上面的表达式,jQuery是否足够聪明,可以在找到第一个匹配后停止?

更新:@Mutnowski建议首先使用eq(),但在阅读jQuery文档之后,这两种方法似乎也有同样的缺点:jQuery将首先获得所有匹配,然后只过滤掉第一个元素。

3 个答案:

答案 0 :(得分:6)

您希望.eq(index)获取索引

$("td").eq(2)
$("td:eq(2)")

http://api.jquery.com/eq/

如果您只想第一次使用.first()

$("tr").first()
$("tr:first")

http://api.jquery.com/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 $();
}