Vorgehensweise mit jQuery - document.getElementById ("selectlist"). Value


141

Was entspricht in jQuery document.getElementById("selectlist").value?

Ich versuche, den Wert eines ausgewählten Listenelements zu ermitteln.

Vielen Dank.


10
Sie erhalten wahrscheinlich Downvotes, da Ihre Fragen in wenigen Sekunden bei Google oder durch Lesen der JQuery-Dokumente beantwortet werden können.
Zombat

53
+1 auf Mandeln, um den Nutzern von SO zu trotzen. Seine Frage ist absolut gültig, unabhängig davon, wie einfach / schwer sie zu lösen war. Mehr Verkehr zu SO für zukünftige Suchanfragen zu diesem Thema.
Mr. Smith

7
Komm schon Leute - jQuery Voodoo ist für einen alten Mann wie mich, Serverentwickler, den ich seit ungefähr 20 Jahren bin, nicht so einfach zu lernen - sei nett und schont uns jQuery-Neulinge! :-)
marc_s

1
@Boekwurm Ben - er mag mutig sein, aber Sie können auch nicht die SO-Benutzer beschuldigen. Die Leute sehen im Allgemeinen gerne ein wenig Mühe von der Person, die die Frage stellt.
Zombat

12
Soweit ich mich erinnere, war dies das erste, was ich über jQuery nicht verstanden habe. Ich denke, es ist eine berechtigte Frage, wenn man die Wahrheit sagt, und das Abschreiben war hart. stackoverflow.com/questions/75296/…
James Wiseman

Antworten:



214

"Äquivalent" ist hier das Wort

Während...

$('#selectlist').val();

...ist äquivalent zu...

document.getElementById("selectlist").value

... es ist erwähnenswert, dass ...

$('#selectlist')

... obwohl 'äquivalent' nicht dasselbe ist wie ...

document.getElementById("selectlist")

... da ersteres ein jQuery-Objekt zurückgibt, kein DOM-Objekt.

Verwenden Sie Folgendes, um die DOM-Objekte von jQuery abzurufen:

$('#selectlist').get(); //get all DOM objects in the jQuery collection
$('#selectlist').get(0); //get the DOM object in the jQuery collection at index 0
$('#selectlist')[0]; //get the DOM objects in the jQuery collection at index 0

1
vielleicht ein wenig tangential hier, aber das wäre eine großartige Information: Gibt es eine Möglichkeit, das DOM-Objekt aus dem jQuery-Objekt zu erhalten? edit : beantwortete meine eigene Frage in edit.
Clayton Hughes

4
Ich schlug eine Stunde lang mit dem Kopf gegen eine Wand, bis mir klar wurde, dass getElementById () nicht durch $ () ersetzt werden kann. Vielen Dank für diese Antwort!
Stricken

3
@knite - Ja. Ich wünschte, ich hätte mir das von jemandem erklären lassen, als ich jQuery zum ersten Mal benutzte.
James Wiseman

1
Vielen Dank für die spätere Erklärung, wie DOM-Objekte in jquery abgerufen werden können :).
Kailash19

+1 Oldie, aber ein Goodie. Ich habe versucht herauszufinden, warum Google Maps ein DOM-Objekt akzeptiert hat, aber mein jQuery-Objekt nicht akzeptiert hat. Eine schnelle Google-Suche führte mich hierher, nicht zu jQuery-Dokumenten.
TonyG

9

Chaos ist genau richtig , aber für diese Art von Fragen sollten Sie die Jquery-Dokumentation online lesen - sie ist wirklich ziemlich umfassend. Die Funktion, nach der Sie suchen, heißt "jquery selectors".

Im Allgemeinen tun Sie dies $('#ID').val()- die .afterwards können eine Reihe von Dingen für das Element ausführen, das vom Selektor zurückgegeben wird. Sie können auch alle Elemente einer bestimmten Klasse auswählen und mit jedem Element etwas anfangen. In der Dokumentation finden Sie einige gute Beispiele.


9

Es kann auf drei verschiedene Arten geschehen, obwohl alle fast gleich sind

Javascript Weg

document.getElementById('test').value

Jquery Weg

$("#test").val()          

$("#test")[0].value             

$("#test").get(0).value

Dies ist die beste Antwort. Danke dir!
Carter Medlin

2

Für diejenigen, die sich fragen, ob die jQuery-ID-Selektoren langsamer als document.getElementById sind, lautet die Antwort "Ja", jedoch nicht aufgrund der Vorurteile, dass das gesamte DOM nach einem Element durchsucht wird. jQuery verwendet tatsächlich die native Methode. Dies liegt tatsächlich daran, dass jQuery zuerst einen regulären Ausdruck verwendet, um Zeichenfolgen im Selektor zu trennen, nach denen gesucht werden soll, und natürlich den Konstruktor auszuführen:

rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/

Während die Verwendung eines DOM-Elements als Argument sofort mit 'this' zurückgegeben wird.

Also das:

$(document.getElementById('blah')).doSomething();

Wird immer schneller sein als das:

$('#blah').doSomething();

0

In einigen Fällen, an die ich mich nicht erinnern kann, warum, aber $('#selectlist').val()nicht immer den richtigen Artikelwert zurückgibt, verwende ich $('#selectlist option:selected').val()stattdessen.


Vielleicht könnten Sie einige Links zurück posten, die dies bestätigen. Ich wäre jedoch überrascht. Dies wäre ein grundlegender Fehler in jQuery. Ist es möglich, dass Sie eine fehlerhafte Version der Bibliothek verwenden?
James Wiseman

Könnte James gewesen sein, ich denke, es könnte in 1.3.0 gewesen sein, kann nicht in 1.3.2 repro sein, aber es könnte auch in IE6 oder 7 gewesen sein, die ich nicht mehr installiert habe, werde ich sehen wenn ich die ursprüngliche Ursache herausfinden und hier melden kann.
Brett Ryan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.