Abrufen des Basiselements von einem jQuery-Objekt

68

Ich habe Probleme, hier die richtige Terminologie zu finden, aber wenn Sie ein jQuery-Objekt haben ...

$('#MyObject')

... ist es möglich das Basiselement zu extrahieren? Das heißt, das Äquivalent dazu:

document.getElementById('MyObject')
dansays
quelle

Antworten:

55

Ja, benutze .get(index). Laut Dokumentation :

Die .get()Methode gewährt Zugriff auf die DOM-Knoten, die jedem jQuery-Objekt zugrunde liegen.

VolkerK
quelle
96
$('#MyObject').get(0);

Ich denke, das ist was du willst. Ich denke, Sie können es auch wie ein normales Array referenzieren mit:

$('#MyObject')[0];

Aber ich bin mir nicht sicher, ob das immer funktionieren wird. Halten Sie sich an die erste Syntax.

Aaron Wagner
quelle
wenn ich console.log $('#MyObject).get(0)in den HTML-Tags bin :beforeund wenn ich Chrome :afterbenutze. Irgendeine Idee, was diese bedeuten?
Connor Leech
9

Ein jQuery-Objekt besteht aus einer Reihe von Elementen. In Ihrem Fall eine Menge von einem Element. Dies unterscheidet sich von bestimmten anderen Bibliotheken, die einzelne Elemente umschließen und eine alternative Syntax für Selektoren bereitstellen, die mehrere Übereinstimmungen zurückgeben.

Aaron W und VolkerK haben bereits erklärt, wie auf das erste Element (Index 0) in der Menge zugegriffen werden kann .

Shog9
quelle
5

Ich habe Aarons Aussagen in allen Browsern getestet, die ich auf meiner Box habe:

$('#MyObject').get(0);

vs.

$('#MyObject')[0];

Soweit ich das beurteilen kann, ist es nur eine Frage der persönlichen Präferenz.

Funktionell sind diese beiden Anweisungen sowohl für vorhandene als auch für nicht vorhandene Elemente gleichwertig. Ich habe die folgenden Browser getestet: Chrome 27.0, FF 21.0, IE10, IE9, IE8, IE7, IE6.

In den von mir durchgeführten Geschwindigkeitstests konnte nicht immer festgestellt werden, welche Variation schneller war. Das Ergebnis war nicht immer konsistent, selbst im selben Browser. Für die Geschwindigkeitstests habe ich nur vorhandene Elemente getestet. Meine Testergebnisse sind hier .

VeeTheSecond
quelle