2012-04-03 13 views
7

Jaki jest jQuery odpowiednik querySelector? Jedynym sposobem znalazłem tak daleko jest, aby wybrać wszystkie następnie wybrać pierwszy wybór:jQuery odpowiednik querySelector

$(selectorString)[0] 

Z powyższej wypowiedzi, jQuery jest wystarczająco inteligentny, aby zatrzymać po znalezieniu pierwszy mecz?

Aktualizacja: @Mutnowski zasugerował użycie eq() i pierwszej, ale po przeczytaniu dokumentacji jQuery te dwie metody wydają się mieć tę samą wadę: jQuery najpierw uzyska wszystkie dopasowania, a następnie odfiltruje tylko pierwszy element.

+0

uwagę, że "eq" nie jest selektor CSS, to realizacja jQuery. Aby uzyskać najlepszą wydajność, lepiej napisać '$ (" td "). Eq (2)' zamiast '$ (" td: eq (2) ")' – Killy

Odpowiedz

1

Wygląda więc na to, że nie ma odpowiednika querySelector w jQuery lub i w innych bibliotekach, na które patrzyłem.

Obejście polega na wybraniu wszystkich pasujących elementów (odpowiednik querySelectorAll), a następnie odfiltrowaniu pierwszego. Można to zrobić za pomocą [0] (zwraca węzeł html) lub jak sugeruje @Mutnowski z eq (0) lub pierwszym (zwracanie obiektu jQuery).

0

można napisać prosty plugin (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 $(); 
} 
Powiązane problemy