Folgende Arbeiten wie erwartet:Warum gibt es keine jQuery-Objekte, wenn ich über jQuery-Objekte mit .each() iteriere?
$(".foo").first().text("hi!")
... weil first()
kehrt ein Objekt jQuery.
Allerdings, wenn ich mit der text()
Methode für alle Spiele arbeiten will, muß ich tun:
$(".foo").each(function(idx, obj) {
$(obj).text("hi!")
}
)
... weil each()
geben Sie Objekte DOM.
Was ist der Designgrund für diesen verwirrenden Unterschied? Wie kann ich vermeiden, ein jQuery-Objekt für jede Übereinstimmung zu erstellen?
Genau das, was ich sagen wollte, und wenn first() kein jQuery-Objekt zurückgegeben hat, müssten Sie $ ($ (selector) .first()) verwenden, was etwas mit jQuerys Ziel kollidiert. –
Okay, ich hatte den Eindruck, dass '$ (". Foo ")' jQuery-Objekte _mit _ beginnen ließ und sie zu "einfachen" DOM-Objekten zerlegt wurden, wenn sie durch 'each()' übergeben wurden. Ich denke, das ist nicht ganz das, was hier passiert :) – badp
@Jon - Das ist nicht korrekt. '$ (selector) .first()' * gibt * ein jQuery-Objekt zurück. Sie sollten es nicht erneut mit '$ ($ (selector) .first())' umbrechen. Die einzige jQuery-Methode (nach meinem Wissen), die ein einfaches DOM-Element zurückgibt, ist '.get (0)', wenn Sie eine Zahl übergeben. Ohne das Zahl-Argument erhalten Sie ein Array von DOM-Elementen. – user113716