2016-06-19 15 views
-3

Ich habe diesen Code aus dem jQuery Plugin-Tutorial. meine Frage ist jedoch eine javascript/jquery Frage.Wie funktioniert dieser Code? (jQuery Verkettung)

Im Code können Sie sehen, dass die filter() ein Objekt zurückgibt, das eine Auflistung der "gefilterten" Objekte enthält. und die append() manipuliert es.

Was ich fragen ist: Wie die Append-Funktion alle Elemente manipuliert und nicht nur einmal auf das zurückgegebene Objekt funktioniert?

this.filter("a").append(function() { 
    return " (" + this.href + ")"; 
}); 
+2

Ihre Frage macht nicht viel Sinn. Im zweiten Absatz haben Sie gesagt, dass das Rückgabeobjekt die Sammlung enthält ... also "ALLE Elemente" und "das zurückgegebene Objekt" sind dasselbe. – Quentin

+0

ich verstehe .. ich werde versuchen, umzuformulieren. – yossi

+1

Wenn ich verstanden habe, was Sie fragen (wörtlich wie es funktioniert), ist es eine Frage des Umfangs. Laut der Dokumentation - http://api.jquery.com/append/#append-function - operiert "append.function()' an "jedem Element in der Menge der übereinstimmenden Elemente [...] Innerhalb der Funktion 'this 'bezieht sich auf das aktuelle Element in der Menge." Mit anderen Worten, in Ihrem Code unterscheidet sich der Geltungsbereich des anfänglichen 'this.filter' von dem von' this.href' innerhalb der Funktion selbst, die wiederum jedes Element während der Iteration durch die Sammlung repräsentiert. –

Antwort

1

Dies ist aufgrund der Art der append(function) und die Differenz in ihrem Umfang zwischen den anfänglichen this und den einem in der Funktion in Ihrem Code.

Per der jQuery Dokumentation unter http://api.jquery.com/append/#append-function betreibt append(function) auf „jedes Element in dem Satz von abgestimmten Elementen. [...] Innerhalb der Funktion this in dem Satz mit dem aktuellen Element verweist.“

Also, in Ihrem Code, this.filter("a") ist ein jQuery-Objekt enthält alle passenden Elemente, während this.href innerhalb der Funktion selbst jedes dieser Elemente wiederum während der Iteration durch die Sammlung darstellt. Daher wird der Text an alle übereinstimmenden Elemente angehängt.