Verkettung von Ereignissen und DOM-Iteration

8

Unten habe ich zwei jQuery-Selektoren.

Der erste sucht nach einem DOM-Element in einem zwischengespeicherten Objekt und durchsucht dann seine Eltern, dann sucht er die Eltern (Tabelle) nach einem anderen dom-Element. (Beispiel 2)

Die zweite (2 Zeilen) sucht über das zwischengespeicherte Element. (Beispiel 1)

%Vor%

Welcher ist schneller / Best Practice?
Ex. Ich würde ohne Zweifel schneller auf jQuery-Funktionen verweisen, d. .hide().animate().show() , aber wann suchen Sie nach DOM-Elementen?

    
Christian Werther 27.09.2012, 14:25
quelle

3 Antworten

0

Es sieht so aus, als ob Sie versuchen, verschiedene Nachkommen aus table.setting.body zu finden und verschiedene Aufgaben für diese Nachkommen durchzuführen, ohne table.setting.body zweimal angeben zu müssen.

Sie können end () verwenden, um dies zu erreichen. Wenn beispielsweise table.setting.body ein jQuery-Objekt ist, können Sie Folgendes schreiben:

%Vor%

(Wenn table.setting.body ein DOM-Element ist, müssen Sie $() zuerst darauf anwenden).

Der obige Code wertet das zwischengespeicherte Objekt nur einmal aus, führt zwei Aufrufe von find() aus (etwas schneller als Ihre Aufrufe von $() mit einem context Argument meiner Erfahrung nach), zwei Aufrufe von on() (dasselbe wie du) und einen einzigen Aufruf von end() (der nur einen Gegenstand von einem Stapel löscht und ziemlich schnell sein sollte).

    
Frédéric Hamidi 28.09.2012, 14:05
quelle
1

Meiner Meinung nach ist dies weniger eine Frage der Geschwindigkeit als vielmehr eine Frage der Wartbarkeit und des guten Programmierstils.

Und hier ist Beispiel 1 viel besser als Beispiel 2.

Vermeide Verwirrung und halte die Dinge getrennt. Sie möchten 2 Ereignisse an 2 verschiedene Elemente anhängen - schreiben Sie 2 Anweisungen. Dies macht Ihren Code viel strukturierter und lesbarer.

    
Christoph 28.09.2012 13:56
quelle
0

Der einzige Unterschied, den ich sehe, ist die Verwendung von Eltern in Ihrem ersten Ansatz. jQuery.parents sucht nach dem benötigten Elternteil und verwendet dabei eine Schleife innerhalb des Funktionsverzeichnisses:

%Vor%

(http://code.jquery.com/jquery-1.8.2.js)

cur = elem[ dir ] bedeutet elem["parentNode"] und wird für alle Eltern wiederholt, weil bis undefiniert ist. Es gibt keine Verknüpfung, wenn das gewünschte Elternteil als Referenz angegeben wird.

Abhängig von der Pfadlänge zwischen dem ersten gesuchten Element und dem Stamm des Dokuments benötigt der erste Ansatz mehr DOM-Operationen.

Daher empfehle ich den zweiten Ansatz.

    
Sebastian vom Meer 28.09.2012 13:47
quelle

Tags und Links