Як це зробити за допомогою jQuery - document.getElementById ("selectlist") значення


141

У jQuery, що таке еквівалент document.getElementById("selectlist").value?

Я намагаюся отримати значення елемента списку.

Дякую.


10
Ви, швидше за все, отримуєте загальні відгуки, оскільки на ваші запитання можна буде відповісти всього за кілька секунд в Google або прочитавши документи JQuery.
зомбат

53
+1 до мигдаликів для поживлення користувачів SO. Його питання є цілком справедливим, незалежно від того, наскільки легко / важко це було вирішити. Більше трафіку на SO для майбутніх пошуків із цього питання.
Містер Сміт

7
давай хлопці - jQuery voodoo не все так просто навчитися для такого старого хлопця, як я, серверного розробника, який я був протягом останніх 20 років, - будьте приємні та йдіть легко на нас, новачків jQuery! :-)
marc_s

1
@Boekwurm Ben - він може бути сміливим, але ви також не можете звинувачувати користувачів SO. Люди, як правило, люблять бачити трохи зусиль, які задає людина.
zombat

12
Як я пам’ятаю, це було перше, чого я не зрозумів про jQuery. Я вважаю, що його питання є дійсним, якщо сказати правду, і маркування було суворим. stackoverflow.com/questions/75296/…
Джеймс Вісман,

Відповіді:



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? редагувати : відповів на моє запитання в редагуванні.
Клейтон Х'юз

4
Я бив головою об стіну протягом години, поки не зрозумів, що getElementById () не може бути замінений на $ (). Дуже дякую за цю відповідь!
knite

3
@knite - Так. Я б хотів, щоб я хтось пояснив мені, коли я вперше застосував jQuery.
Джеймс Вісман

1
дякую за пізніше пояснення частини отримання DOM-об'єктів у jquery :).
kailash19

+1 Старий, але добрий. Я намагався з'ясувати, чому Карти Google прийняли об’єкт DOM, але не прийняли мій об’єкт jQuery. Швидкий пошук в Google привів мене сюди, а не в документи jQuery.
TonyG

9

Хаос не впізнається, хоча для таких питань слід ознайомитись з документацією Jquery в Інтернеті - вона справді досить вичерпна. Функція, яку ви перебуваєте, називається "селектори jquery"

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


9

Це можна зробити трьома різними способами, хоча всі вони майже однакові

Javascript спосіб

document.getElementById('test').value

Jquery шлях

$("#test").val()          

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

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

Це найкраща відповідь. Дякую!
Картер Медлін

2

Для тих, хто цікавиться, чи вибіркові jQuery id повільніше, ніж document.getElementById, відповідь "так", але не через попереднє уявлення, яке він шукає через весь DOM, шукаючи елемент. jQuery насправді використовує нативний метод. Це насправді тому, що jQuery спочатку використовує регулярний вираз, щоб виділити рядки в селекторі, щоб перевірити, і звичайно запустити конструктор:

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

Тоді як використання елемента DOM в якості аргументу повертається одразу з "this".

Отже це:

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

Завжди буде швидше, ніж це:

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

0

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


Можливо, ви можете опублікувати деякі посилання назад, які підтверджують це. Я був би здивований, однак. Це була б основна помилка в jQuery. Можливо, ви використовуєте помилкову версію бібліотеки?
Джеймс Вісман

Може бути, Джеймс, я думаю, що це могло бути в 1.3.0, не можу здатися, що це дорікання в 1.3.2, але це могло бути і в IE6 або 7, які я більше не встановлював, я побачу якщо я можу з’ясувати першопричину і повідомити про це тут.
Бретт Райан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.