Jak to zrobić za pomocą jQuery - document.getElementById („selectlist”). Wartość

141

W jQuery, co jest odpowiednikiem document.getElementById("selectlist").value?

Próbuję uzyskać wartość elementu listy wyboru.

Dzięki.

tonyf
źródło
10
Prawdopodobnie otrzymujesz głosy przeciw, ponieważ odpowiedzi na Twoje pytania można uzyskać w ciągu kilku sekund w Google lub czytając dokumentację JQuery.
zombat
53
+1 do migdałków dla odważnych użytkowników SO. Jego pytanie jest jak najbardziej trafne, niezależnie od tego, jak łatwe / trudne było do rozwiązania. Większy ruch do SO dla przyszłych wyszukiwań na ten temat.
Mr. Smith
7
dajcie spokój - jQuery voodoo nie jest wcale takie łatwe do nauczenia dla starszego faceta, takiego jak ja, programisty serwerowego, którym jestem przez ostatnie 20 lat - bądźcie mili i nie przejmujcie się nowicjuszami jQuery! :-)
marc_s
1
@Boekwurm Ben - może i jest odważny, ale nie można też winić użytkowników SO. Ludzie generalnie lubią widzieć niewielki wysiłek osoby zadającej pytanie.
zombat
12
O ile pamiętam, była to pierwsza rzecz, której nie zrozumiałem o jQuery. Myślę, że to ważne pytanie, czy prawdę powiedziawszy, a ocenianie było trudne. stackoverflow.com/questions/75296/…
James Wiseman

Odpowiedzi:

148
$('#selectlist').val();
ChaosPandion
źródło
1
Whoa. Masz jackpota LOL.
Jacob Relkin
214

Słowo „ekwiwalent” to tutaj słowo

Podczas...

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

...jest równa...

document.getElementById("selectlist").value

... warto zauważyć, że ...

$('#selectlist')

... chociaż „odpowiednik” to nie to samo co ...

document.getElementById("selectlist")

... ponieważ pierwsza zwraca obiekt jQuery, a nie obiekt DOM.

Aby pobrać obiekt (y) DOM z jQuery, użyj:

$('#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
źródło
1
być może trochę stycznie, ale to byłaby świetna informacja: czy istnieje sposób na pobranie obiektu DOM z jQuery? edycja : odpowiedział na moje własne pytanie w edycji.
Clayton Hughes
4
Przez godzinę uderzałem głową o ścianę, aż zdałem sobie sprawę, że metody getElementById () nie można zastąpić znakiem $ (). Dziękuję bardzo za tę odpowiedź!
knite
3
@knite - Tak. Chciałbym, żeby ktoś mi to wyjaśnił, kiedy pierwszy raz użyłem jQuery.
James Wiseman,
1
dzięki za późniejszą część wyjaśnienia pobierania obiektów DOM w jquery :).
kailash19
+1 Oldie but a goodie. Próbowałem dowiedzieć się, dlaczego Mapy Google zaakceptowały obiekt DOM, ale nie zaakceptowały mojego obiektu jQuery. Szybkie wyszukiwanie w Google zaprowadziło mnie tutaj, a nie do dokumentów jQuery.
TonyG
9

Chaos jest na miejscu, chociaż w przypadku tego rodzaju pytań powinieneś sprawdzić dokumentację Jquery online - jest ona naprawdę dość obszerna. Funkcja, której szukasz, nazywa się „selektory jquery”

Generalnie tak $('#ID').val()- .afterwards może zrobić wiele rzeczy na elemencie, który jest zwracany z selektora. Możesz także wybrać wszystkie elementy z określonej klasy i zrobić coś z każdym z nich. Zapoznaj się z dokumentacją, aby uzyskać dobre przykłady.

RodH257
źródło
9

Można to zrobić na trzy różne sposoby, chociaż wszystkie są prawie takie same

Sposób JavaScript

document.getElementById('test').value

Sposób JQuery

$("#test").val()          

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

$("#test").get(0).value
sayannayas
źródło
To najlepsza odpowiedź. Dziękuję Ci!
Carter Medlin,
2

Dla tych, którzy zastanawiają się, czy selektory id jQuery są wolniejsze niż document.getElementById, odpowiedź brzmi: tak, ale nie z powodu uprzedzenia, że ​​przeszukuje cały DOM w poszukiwaniu elementu. jQuery faktycznie używa metody natywnej. Dzieje się tak dlatego, że jQuery używa najpierw wyrażenia regularnego, aby oddzielić ciągi w selektorze do sprawdzenia, i oczywiście uruchamia konstruktor:

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

Podczas gdy użycie elementu DOM jako argumentu wraca natychmiast z „this”.

Więc to:

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

Zawsze będzie szybszy niż to:

$('#blah').doSomething();
marksyzm
źródło
0

W niektórych przypadkach nie pamiętam dlaczego, ale $('#selectlist').val()nie zawsze zwracam prawidłową wartość przedmiotu, więc $('#selectlist option:selected').val()zamiast tego używam .

Brett Ryan
źródło
Może mógłbyś zamieścić linki, które to potwierdzają. Byłbym jednak zaskoczony. Byłby to podstawowy błąd w jQuery. Czy to możliwe, że używasz błędnej wersji biblioteki?
James Wiseman,
To mógł być James, myślę, że mógł to być w 1.3.0, nie wydaje się, aby był odtworzony w 1.3.2, ale mógł też być w IE6 lub 7, których już nie instalowałem, zobaczę czy mogę znaleźć pierwotną przyczynę i zgłosić ją tutaj.
Brett Ryan