Ja, es gibt viele Themen dazu, aber ich habe es immer noch nicht verstanden:
Ich habe zwei jsfiddle vorbereitet:
zurückWas ist der Unterschied? Es gibt viele Antworten, aber meine Beispiele zeigen die gleiche Ausgabe. Also einige dieser Antworten könnten falsch sein!?
"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();
:
Die Chrome Console zeigt auch die gleiche Ausgabe!
Was ist der Unterschied?
Zwei Dinge:
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.
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 - ).
Tags und Links javascript jquery jquery-plugins