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.

Tonyf
quelle
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:

148
$('#selectlist').val();
ChaosPandion
quelle
1
Whoa. Du hast den Jackpot LOL.
Jacob Relkin
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
James Wiseman
quelle
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.

RodH257
quelle
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
sayannayas
quelle
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();
marksyzm
quelle
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.

Brett Ryan
quelle
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