2010-02-24 15 views
14

Wie kann ich jQuery die nativen DOM-Elemente zurückgeben, die es einkapselt?Abrufen von nativen DOM-Elementen aus jQuery-Objekten?

+1

Was würden Sie sonst noch mit jQuery-Selektoren außer "manipulate elements" machen? Ich meine, deine Frage scheint im Grunde wie "Kann ich jQuery verwenden?" auf die die Antwort "ja" wäre. – Pointy

+0

Warum möchten Sie das tun? Und nein, Ihr Ausdruck funktioniert nicht, da $ ("cheese_tag") ein jQuery-Objekt zurückgibt. – alexn

+0

Sorry, eine bessere Möglichkeit, meine Frage zu stellen, wäre "Kann ich jQuery-Objekte in solche konvertieren, die normales JavaScript manipulieren kann?" Wie in Get jQuery ein Javascript-Objekt für die Manipulation zurückgeben. – mattsven

Antwort

28

Wenn Sie Elemente mit jQuery finden, können Sie sie mit dem „get“ Funktion erhalten können:

var regularElement = $('#myElementId').get(0); 

Innerhalb eines „.each()“ Funktion, die ‚dieses‘ Zeiger bezieht sich auf einen ‚echten‘ Element:

$('input.special').each(function() { 
    var type = this.type; 
    this.value = "exploding balloon"; 
    // etc 
}) 

Die Verwendung von jQuery macht Javascript nicht "anders". Es ist Javascript, und das DOM ist immer noch das DOM.

+1

Ich brauchte eine Minute, um zu verstehen, warum Sie die Funktion get() für das Objekt jquery verwendet haben, aber dann habe ich die Kommentare zur Frage selbst gelesen. Es macht jetzt Sinn. Ich kann sehen, dass get() nützlich ist, wenn es mit Nicht-jQuery-JavaScript integriert wird. –

+0

Aaaaand '$ ('# myElementId') [0]' funktioniert auch. – mattsven

2

$('myTag').get(0) gibt das HTML-Element zurück.

0

Ich nehme an, Sie versuchen zu überprüfen, ob Ihr jQuery-Objekt die erste Instanz von "cheese_tag" ist. Sie können das erste Tag mit dem Selektor :first finden und dann müssen Sie den Vergleich nicht durchführen. Zum Beispiel, erhalten Sie die erste div Tag wäre: $('div:first'). Die vollständige Liste der jQuery-Selektoren finden Sie unter documentation.

+0

Nicht genau ... Ich wollte ein Javascript-HTML-Element-Objekt als Rückgabe bekommen. – mattsven

0

Andere Leute haben die Frage bereits direkt beantwortet. Verwenden Sie die Methode get().

Die meiste Zeit möchten Sie jedoch jQuery-Methoden verwenden, um die Manipulation durchzuführen, anstatt auf das rohe DOM-Element zuzugreifen und es dann mit "standardmäßigen" JavaScript zu modifizieren.

Zum Beispiel können Sie mit jQuery einfach $ ('mySelector'). AddClass ('myClass') angeben, um einem DOM-Element eine CSS-Klasse hinzuzufügen. Dies ist viel komplizierter (und Browser-spezifisch) mit direkter DOM-Manipulation. Dieses Konzept erstreckt sich auf fast jede andere DOM-Manipulation, die Sie vornehmen möchten.

2

jQuery verwendet Sizzle Selector Engine *. Sie können es auch alleine verwenden.

* Bestätigt durch Doug Neiner, die es richtig ist, bedeuten;)

+1

Richtig! Fügen Sie einfach sizzle.js hinzu und fügen Sie dann diese Zeile hinzu: 'window. $ = Window.Sizzle'. Und '$ (" cheese_tag ")' gibt '[]' zurück. '$ (" # cheese_id ") [0] === document.getElementById (" cheese_id ")' –

+0

Was, nein "Ich bin Doug Neiner und ich stimme dieser Antwort zu"? Hehe. – Sampson

+3

Ich bin Doug Neiner und ich stimme dieser Antwort zu –

0

A jQuery Objekt ist eine Array artige Hülle um ein oder mehr DOM-Elemente. Um einen Verweis auf die tatsächlichen DOM-Elemente (anstelle des jQuery-Objekts) zu erhalten, haben Sie zwei Optionen. Die erste (und schnellste) Methode Array Notation verwenden:

$("#foo")[ 0 ]; // Equivalent to document.getElementById("foo") 

Die zweite Methode ist die .get() Funktion verwenden:

$("#foo").get(0); // Identical to above, only slower. 

Sie können auch .get() nennen ohne Argumente abrufen ein echtes Array von DOM-Elementen.

+0

War mir nicht bewusst, dass Sie nur 'get()' für ein Array aufrufen können. Nett. – mattsven

Verwandte Themen