jQuery-эквивалент querySelector - PullRequest
8 голосов
/ 03 апреля 2012

Что такое jQuery-эквивалент querySelector?Единственный способ, который я нашел до сих пор, - это выбрать все, а затем выбрать первый выбор:

$(selectorString)[0]

С вышеприведенным выражением достаточно ли умного jQuery, чтобы остановиться после нахождения первого соответствия?

Обновление: @Mutnowski предложил использовать eq () и сначала, но после прочтения документации jQuery эти два метода, похоже, имеют один и тот же недостаток: jQuery сначала получит все совпадения, а затем отфильтрует только первый элемент.

Ответы [ 3 ]

6 голосов
/ 03 апреля 2012

Вы хотите, чтобы .eq (index) получил индекс

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

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

Если вы хотите только первое использование .first ()

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

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

3 голосов
/ 06 апреля 2012

Таким образом, похоже, что в jQuery или в других библиотеках, на которые я смотрел, нет эквивалента querySelector.

Обходной путь - выбрать все подходящие элементы (эквивалентные querySelectorAll), а затем отфильтровать первыйодин.Это можно сделать с помощью [0] (возвращает html-узел) или по предложению @Mutnowski с eq (0) или сначала (возвращая объект jQuery).

0 голосов
/ 14 ноября 2017

вы можете написать простой плагин ( заметки о совместимости )

$.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 $();
}
...