jQueryPlugin: gib das gegen return zurück this.each ()

8

Ja, es gibt viele Themen dazu, aber ich habe es immer noch nicht verstanden:

Ich habe zwei jsfiddle vorbereitet:

zurückgeben

gib this.each ()

zurück

Was ist der Unterschied? Es gibt viele Antworten, aber meine Beispiele zeigen die gleiche Ausgabe. Also einige dieser Antworten könnten falsch sein!?

  

Was bewirkt "return this.each ()" in jQuery? ?

"Es erlaubt einem, ein Plugin oder ein Ereignis auf einer Reihe von Elementen aufzurufen und dann dieselbe Funktion oder dasselbe Ereignis auf alle Elemente anzuwenden" - & gt; arbeite mit " return this as well!"

"es erlaubt Ihnen, mehrere Funktionen zu verketten" - & gt; gleich hier

"Erlaubt Ihnen Dinge wie: $ (" mySelector "). foo (). show ();" - & gt; Das kann ich auch noch, wenn ich 'dieses' zurückgebe

Ich habe auch eine andere Datei erstellt, die meiner Meinung nach zeigt, dass es egal ist, ob Sie Ihren Code in return this.each(); :

einfügen

Ссылка

Die Chrome Console zeigt auch die gleiche Ausgabe!

Was ist der Unterschied?

    
Johannes Staehlin 10.03.2012, 04:27
quelle

3 Antworten

12

Zwei Dinge:

  1. Ihre Beispiele sind insofern fehlerhaft, als sie für jedes Element genau dasselbe tun.
  2. Das eigentliche Problem ist nicht return this gegenüber return this.each , das Problem ist this gegenüber this.each .

Betrachte für (1) den Unterschied zwischen diesem Plugin:

%Vor%

Demo: Ссылка

Und dieses Plugin:

%Vor%

Demo: Ссылка

Wie Sie sehen, müssen Sie this.each verwenden, wenn Sie die einzelnen Elemente in this anders einstellen müssen. Sie hätten ähnliche Effekte, wenn Ihr Plugin elementspezifische Daten an jedes Element anhängen müsste: Wenn Sie each nicht verwendet hätten, würden Sie am Ende alle Elemente in this mit demselben Datenelement verknüpfen. und das würde dich nur verwirrt darüber lassen, warum Informationen überall herumbluten.

Bei (2) spielt es keine Rolle, ob Sie return this oder return this.each(... seit x.each(...) gibt x auf jeden Fall zurück.

    
mu is too short 10.03.2012, 04:41
quelle
0

Sie sind beide genau gleich. .each() gibt this zurück, also ist return this.each() GENAU identisch mit this.each(); return this;

Bearbeiten: Die Methode makeRed der neuesten Geige gibt this nicht zurück und ist daher nicht verkettbar.

    
Kevin B 10.03.2012 04:37
quelle
0

Lassen Sie mich Ihnen zwei "äquivalente" Codeabschnitte zeigen, die Ihre Frage klären könnten:

Mit jQuery "each" -Funktion:

%Vor%

Ohne jQuery "each" -Funktion:

%Vor%

Im Grunde genommen wird each function verwendet, um Code auf alle Elemente in this object anzuwenden ( als this bezieht sich normalerweise auf eine Gruppe von Elementen, die von einem jQuery-Selektor zurückgegeben werden ) ) und gibt den Verweis auf this zurück ( als each -Funktion gibt immer diesen Verweis zurück - um die Verkettung von Anrufen zu ermöglichen - )

Als Randnotiz : Der zweite Ansatz ( - for loop - ) ist schneller (vor allem in alten Browsern) als der vorherige ( - each function - ).

    
rubensa 25.11.2014 10:58
quelle