Как это сделать с помощью jQuery - document.getElementById («список выбора»). Value

142

Что эквивалентно в jQuery document.getElementById("selectlist").value?

Я пытаюсь получить значение элемента списка выбора.

Спасибо.

тониф
источник
10
Вы, вероятно, получаете отрицательные голоса, потому что на ваши вопросы можно ответить всего за несколько секунд в Google или прочитав документацию JQuery.
zombat
53
+1 к миндалинам за храбрых пользователей SO. Его вопрос совершенно верен, независимо от того, насколько легко / сложно его было решить. Больше трафика в SO для будущих поисков по этой теме.
Мистер Смит,
7
Да ладно, ребята - jQuery voodoo не так уж и легко изучить для такого старого парня, как я, серверного разработчика, которым я занимаюсь последние 20 лет или около того - будьте любезны и не пренебрегайте нами, новичками в jQuery! :-)
marc_s
1
@Boekwurm Ben - он может быть храбрым, но вы также не можете винить пользователей SO. Обычно людям нравится, когда человек, задающий вопрос, прилагает немного усилий.
zombat
12
Насколько я помню, это было первое, чего я не понял о jQuery. Я думаю, что это правильный вопрос, если говорить правду, а снижение цен было резким. stackoverflow.com/questions/75296/…
Джеймс Уайзман,

Ответы:

150
$('#selectlist').val();
ХаосПандион
источник
1
Ого. Вы получили джекпот LOL.
Джейкоб Релкин
214

«Эквивалент» - вот слово здесь

Пока...

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

...эквивалентно...

document.getElementById("selectlist").value

... стоит отметить, что ...

$('#selectlist')

... хотя "эквивалент" - это не то же самое, что ...

document.getElementById("selectlist")

... поскольку первый возвращает объект jQuery, а не объект DOM.

Чтобы получить объект (ы) DOM из jQuery, используйте следующее:

$('#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
возможно, здесь немного касательно, но это была бы отличная информация: есть ли способ получить объект DOM из jQuery? изменить : ответил на мой собственный вопрос в редактировании.
Clayton Hughes
4
Я бился головой о стену в течение часа, пока не понял, что getElementById () нельзя заменить на $ (). Большое спасибо за этот ответ!
knite
3
@knite - Да. Хотел бы я, чтобы кто-нибудь объяснил мне, что я впервые использовал jQuery.
Джеймс Уайзман
1
спасибо за более позднее объяснение получения объектов DOM в jquery :).
kailash19
+1 Олди, но вкусняшка. Я пытался выяснить, почему Карты Google приняли объект DOM, но не приняли мой объект jQuery. Быстрый поиск в Google привел меня сюда, а не к документации jQuery.
TonyG
9

Хаос подходит, хотя для ответов на подобные вопросы вам следует проверить документацию JQuery в Интернете - она ​​действительно довольно обширна. Функция, которая вам нужна, называется "селекторами jquery".

Как правило, вы это делаете $('#ID').val()- .afterwards может делать ряд вещей с элементом, который возвращается из селектора. Вы также можете выбрать все элементы в определенном классе и сделать что-нибудь с каждым из них. Ознакомьтесь с документацией, чтобы найти хорошие примеры.

СтерженьH257
источник
9

Это можно сделать тремя разными способами, хотя все они почти одинаковы.

Javascript способ

document.getElementById('test').value

JQuery способ

$("#test").val()          

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

$("#test").get(0).value
Sayannayas
источник
Это лучший ответ. Спасибо!
Картер Медлин
2

Для тех, кто задается вопросом, работают ли селекторы id jQuery медленнее, чем document.getElementById, ответ будет положительным, но не из-за предубеждения, что он просматривает всю DOM в поисках элемента. jQuery действительно использует собственный метод. На самом деле это потому, что jQuery сначала использует регулярное выражение, чтобы выделить строки в селекторе для проверки и, конечно же, запустить конструктор:

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

В то время как использование элемента DOM в качестве аргумента немедленно возвращается с помощью this.

Итак, это:

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

Всегда будет быстрее, чем это:

$('#blah').doSomething();
Marksyzm
источник
0

В некоторых случаях я не могу вспомнить, почему, но $('#selectlist').val()не всегда возвращаю правильное значение элемента, поэтому $('#selectlist option:selected').val()вместо этого использую .

Бретт Райан
источник
Возможно, вы могли бы опубликовать несколько ссылок, подтверждающих это. Однако я был бы удивлен. Это было бы фундаментальной ошибкой в ​​jQuery. Возможно, вы используете версию библиотеки с ошибками?
Джеймс Уайзман,
Возможно, это был Джеймс, я думаю, это могло быть в 1.3.0, похоже, не может быть воспроизведено в 1.3.2, но это также могло быть в IE6 или 7, которые я больше не устанавливал, я посмотрю если я смогу выяснить первопричину и сообщить об этом здесь.
Бретт Райан