2012-04-03 6 views
7

Was ist das jQuery-Äquivalent von querySelector? Der einzige Weg, die ich bisher gefunden habe, ist alles dann wählen Sie die erste Auswahl wählen:jQuery-Äquivalent von querySelector

$(selectorString)[0] 

Mit dem obigen Ausdruck ist jQuery intelligent genug, um nach dem ersten Spiel zu finden, zu stoppen?

Update: @Mutnowski schlug vor, eq() und zuerst, aber nach dem Lesen der jQuery-Dokumentation scheinen diese beiden Methoden den gleichen Nachteil zu haben: jQuery wird zuerst alle Übereinstimmungen erhalten, dann nur das erste Element herausfiltern.

+0

zur Kenntnis, dass "eq" Selektor kein CSS ist, ist es eine Implementierung jQuery. Um die beste Leistung zu erzielen, ist es besser, '$ (" td ") zu schreiben. Eq (2)' anstelle von '$ (" td: eq (2) ")' – Killy

Antwort

1

Es scheint also, dass es in jQuery oder i kein Äquivalent von querySelector gibt n andere Bibliotheken, die ich angeschaut habe.

Die Problemumgehung besteht darin, alle übereinstimmenden Elemente (äquivalent zu querySelectorAll) auszuwählen und dann das erste herauszufiltern. Dies kann mit [0] (gibt einen HTML-Knoten zurück) oder wie von @Mutnowski mit eq (0) oder zuerst vorgeschlagen (Rückgabe eines jQuery-Objekts) erfolgen.

0

Sie ein einfaches Plugin schreiben kann (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 $(); 
}