9

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

$(selectorString)[0]

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

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

4

3 回答 3

7

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

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

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

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

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

http://api.jquery.com/first/

于 2012-04-03T18:51:44.237 回答
6

因此,在 jQuery 或我看过的其他库中似乎没有等效的 querySelector。

解决方法是选择所有匹配的元素(相当于 querySelectorAll),然后过滤掉第一个。这可以使用 [0] (返回一个 html 节点)或 @Mutnowski 使用 eq(0) 或 first (返回一个 jQuery 对象)来完成。

于 2012-04-06T16:15:36.960 回答
0

你可以写一个简单的插件(兼容性说明

$.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 $();
}
于 2017-11-14T15:15:01.357 回答