Cómo hacer esto usando jQuery - document.getElementById ("selectlist"). Value


141

En jQuery, ¿a qué equivale document.getElementById("selectlist").value?

Estoy tratando de obtener el valor de un elemento de lista seleccionado.

Gracias.


10
Es probable que reciba votos negativos porque sus preguntas podrían responderse en solo unos segundos en Google o al leer los documentos de JQuery.
zombat

53
+1 a las amígdalas para desafiar a los usuarios de SO. Su pregunta es perfectamente válida, independientemente de lo fácil / difícil que fue resolverla. Más tráfico a SO para futuras búsquedas sobre este tema.
Sr. Smith

77
vamos chicos: jQuery vudú no es tan fácil de aprender para un viejo como yo, desarrollador de servidores que he sido durante los últimos 20 años más o menos. :-)
marc_s

1
@Boekwurm Ben: puede ser valiente, pero tampoco puedes culpar a los usuarios de SO. A la gente generalmente le gusta ver un poco de esfuerzo por parte de la persona que hace la pregunta.
zombat

12
Según recuerdo, esto fue lo primero que no entendí sobre jQuery. Creo que es una pregunta válida si se dice la verdad, y marcar fue duro. stackoverflow.com/questions/75296/…
James Wiseman

Respuestas:



214

"Equivalente" es la palabra aquí

Mientras...

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

...es equivalente a...

document.getElementById("selectlist").value

...Vale la pena señalar que...

$('#selectlist')

... aunque 'equivalente' no es lo mismo que ...

document.getElementById("selectlist")

... ya que el primero devuelve un objeto jQuery, no un objeto DOM.

Para obtener los objetos DOM del jQuery, use lo siguiente:

$('#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
quizás un poco tangencial aquí, pero esta sería una gran información: ¿hay alguna manera de obtener el objeto DOM del jQuery? editar : respondí mi propia pregunta en editar.
Clayton Hughes

44
Me golpeé la cabeza contra la pared durante una hora hasta que me di cuenta de que getElementById () no se puede reemplazar por $ (). ¡Muchas gracias por esta respuesta!
Knite

3
@knite: sí. Desearía que alguien me lo explicara la primera vez que usé jQuery.
James Wiseman

1
gracias por la explicación de la parte posterior de obtener objetos DOM en jquery :).
kailash19

+1 Oldie pero un regalo. Estaba tratando de averiguar por qué Google Maps aceptó un objeto DOM pero no aceptó mi objeto jQuery. Una búsqueda rápida en Google me llevó aquí, no a los documentos de jQuery.
TonyG

9

El caos es perfecto, aunque para este tipo de preguntas debe consultar la documentación de Jquery en línea: realmente es bastante completo. La característica que busca se llama 'selectores jquery'

Generalmente lo hace $('#ID').val(): el .after puede hacer varias cosas en el elemento que se devuelve desde el selector. También puede seleccionar todos los elementos en una clase determinada y hacer algo con cada uno de ellos. Consulte la documentación para ver algunos buenos ejemplos.


9

Se puede hacer de tres maneras diferentes, aunque todas son casi iguales.

Forma Javascript

document.getElementById('test').value

Camino jquery

$("#test").val()          

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

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

Esta es la mejor respuesta. ¡Gracias!
Carter Medlin

2

Para aquellos que se preguntan si los selectores de id jQuery son más lentos que document.getElementById, la respuesta es sí, pero no por la preconcepción de que busca en todo el DOM buscando un elemento. jQuery realmente usa el método nativo. En realidad, es porque jQuery usa primero una expresión regular para separar las cadenas en el selector para verificar y, por supuesto, ejecutar el constructor:

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

Mientras que el uso de un elemento DOM como argumento vuelve inmediatamente con 'esto'.

Así que esto:

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

Siempre será más rápido que esto:

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

0

En algunos casos de los cuales no recuerdo por qué, pero $('#selectlist').val()no siempre devuelvo el valor correcto del artículo, así que lo uso $('#selectlist option:selected').val()en su lugar.


Tal vez podría publicar algunos enlaces que confirmen esto. Sin embargo, me sorprendería. Este sería un error fundamental en jQuery. ¿Es posible que esté utilizando una versión con errores de la biblioteca?
James Wiseman

Podría haber sido James, creo que podría haber estado en 1.3.0, parece que no se puede reprobar en 1.3.2, pero también podría haber estado en IE6 o 7, que ya no tengo instalado, veré si puedo averiguar la causa original e informarlo aquí.
Brett Ryan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.