2012-01-10 9 views
12
<select id="sel"> 
    <option id="1">aa</option> 
    <option id="2">bb</option> 
    <option id="3">cc</option> 
</select> 

$("#sel").change(function(){ 
    alert($(this).children().attr('id')) 
}) 

VIVO:http://jsfiddle.net/cxWVP/Obtener opción seleccionada actual

¿Cómo puedo obtener ID actual opción seleccionada? Ahora siempre muéstrame id = "1".

+4

¿Hay alguna razón usted tiene los atributos de ID en lugar del valor de los atributos de sus opciones? –

+1

FYI: Tener que comenzar con (o es) un número no es válido. –

+0

Uso también valor, pero para este ejemplo, solo mostré ID. –

Respuesta

18
$('#sel').change(function(){ 
    alert($(this).find('option:selected').attr('id')); 
}); 

debería funcionar.

+1

Ningún desarrollador que se precie debe elegir este método sobre [la respuesta de Esailia] (http://stackoverflow.com/a/8809329). Esto es como la ruta panorámica, excepto que no se ve bonita. –

+1

@Jakub: Eso es un poco duro, prefiero la respuesta de Esailia también (ya que es la misma que la mía), pero esto podría considerarse más fácil de entender si eres un desarrollador con mentalidad jQuery y la pregunta menciona jQuery. No soy un desarrollador de jQuery, no me gusta el código jQuery de procedimiento, así que no lo usaría porque tiene un nivel de abstracción innecesario ya que el código JS directo es aún más claro. –

+0

JuanMendes & AndyE, bueno, es por eso que si no les gusta mi respuesta, tienen derecho a rechazarla. No necesita ser demasiado crítico. – Jakub

0

Cambie el atributo id a valor y luego use .val().

<select id="sel"> 
    <option value ="1">aa</option> 
    <option value ="2">bb</option> 
    <option value ="3">cc</option> 
</select> 


var selectedValue = $("#sel").val(); 
+0

Eso no le dará la identificación, le dará: aa, bb o cc –

+0

Gracias por señalar lo obvio (id vs valor). Actualicé mi respuesta. – jrummell

+1

Aún no es lo que se solicitó, no se puede cambiar el HTML. OP realmente necesita acceder al objeto 'option' dentro de la selección –

10

<option> etiquetas deben tener un atributo value. Cuando se selecciona una, obtienes su valor usando $("#sel").val().

<select id="sel"> 
    <option value="1">aa</option> 
    <option value="2">bb</option> 
    <option value="3">cc</option> 
</select> 

$("#sel").change(function(){ 
    alert($(this).val()) 
}); 

DEMO: http://jsfiddle.net/yPYL5/

+1

OP no está pidiendo el valor del objeto seleccionado. Parece que OP realmente quiere es el objeto de opción (su atributo id) –

+0

@JuanMendes: ¿Eh? El OP deseado es 1, 2 o 3 según la opción que se seleccione. Eso es lo que hace este código. '

+0

Lo siento, no me di cuenta de que cambiaste la identificación con valor ... Sugerir que cambien el HTML no le enseña al OP lo que la pregunta realmente estaba haciendo ... aunque podría ser la mejor solución. –

1

$(this).find('option:selected').attr('id')

3

http://jsfiddle.net/ugUYA/

para obtener la opción seleccionada dentro de un elemento de selección, puede utilizar selectedIndex, a continuación, puede utilizar la matriz options llegar al objeto opción seleccionada

$("#sel").change(function(){ 
    alert(this.options[this.selectedIndex].id) 
}) 
0

¿Funcionará el filtro jquery: selected? Algo como esto ...

$("#sel:selected").each(function(){ 
    alert($(this).attr('id')) 
}) 
+0

Eso no funcionará. –

+0

Debe ser '$ (" opción # sel: seleccionado ")', pero es un desperdicio ya que tiene una referencia al elemento de selección como 'this' en el controlador –

3

Prueba este

$("#sel").find('option:selected').attr('id'); 

una buena idea usar value atributo para etiquetas de opción y sólo tiene que utilizar val método para obtener el valor seleccionado a partir del elemento desplegable. $("#sel").val();

+0

Excelente respuesta: Responde la pregunta, pero explica una mejor manera de hacerlo eso. –

1

Prueba esto:

$('select:#idSelect').val() 
Cuestiones relacionadas