Die beste Methode zum Auswählen eines Objekts aus einem anderen unbekannten jQuery-Objekt

8

Nehmen wir an, ich habe ein jQuery-Objekt / eine Sammlung in einer Variablen namens obj gespeichert, die ein DOM-Element mit einer ID namens target enthalten sollte.

Ich weiß nicht im Voraus, ob Ziel ein Kind in obj ist, also:

%Vor%

oder wenn obj gleich Ziel ist, also:

%Vor%

oder wenn target ein Element der obersten Ebene in obj ist, d. h.:

%Vor%

Ich brauche eine Möglichkeit, Ziel aus obj auszuwählen, aber ich weiß nicht im Voraus, wann .find verwendet werden soll und wann Verwenden Sie .filter .

Was wäre die schnellste und / oder prägnanteste Methode, Ziel aus obj zu extrahieren?

Was ich herausgefunden habe, ist:

%Vor%

UPDATE Ich füge Lösungen zu einer JSPERF-Testseite hinzu, um zu sehen, welche die beste ist. Derzeit ist meine Lösung immer noch die schnellste. Hier ist der Link, bitte führen Sie die Tests aus, damit wir mehr Daten haben:

Ссылка

    
Yosi 25.05.2014, 11:53
quelle

5 Antworten

2
jurassix 29.05.2014, 02:59
quelle
4

Was ich herausgefunden habe, ist:

%Vor%

Momentan ist meine Lösung immer noch die schnellste. Hier ist der Link, bitte führen Sie die Tests aus, damit wir mehr Daten haben:

Ссылка

    
Yosi 28.05.2014 14:36
quelle
2

Sie können wrap die Sammlung mit einem anderen Element verwenden und die Methode find verwenden:

%Vor%

Wenn Sie sich Sorgen um die Leistung machen, sollten Sie jQuery nicht verwenden. Vanille JavaScript ist immer schneller als jQuery.

Eine Alternative ist die Methode querySelector oder querySelectorAll :

%Vor%     
undefined 25.05.2014 12:08
quelle
0

Sie können mit einem neuen <div/> beginnen und obj anhängen und dann die Suche durchführen:

%Vor%

Von den drei ist das das zweitschnellste.

    
PeterKA 29.05.2014 01:29
quelle
0

Ich würde für die Verpackung gehen & gt; Lösung finden, weil sie am besten lesbar ist (und ich bezweifle, dass Sie die Leistung weiter optimieren müssen). Aber leistungsmäßig sollten Sie nur die Methoden ausführen, die Sie benötigen, bis Sie Folgendes benötigen:

%Vor%

Ссылка

    
Hugo Silva 29.05.2014 05:34
quelle