2010-08-13 12 views
6

Necesito obtener el valor de la opción seleccionada (cuando se cambia) en una lista de selección y cambiar el texto en un lapso junto a la lista de selección. El problema es que no sé la identificación de la lista de selección. Hay muchas listas de selección diferentes en la página (5-25 +) y todas se crean de forma dinámica, por lo que no puedo tener la identificación especificada en el .change(). Aquí es lo que tengo:Cambia dinámicamente el valor de selección

JavaScript:

$("select").change(function() { 
    var str = ""; 
    str = $("select option:selected").text(); 

    $(".out").text(str); 
}).trigger('change'); 

(. Por supuesto, esto no funciona, pone todos los valores seleccionados en cada tramo)

HTML:

<select name="animal[]"> 
    <option value="dog">dog</option> 
    <option value="cat">cat</option> 
    <option value="bird">bird</option> 
    <option value="snake">snake</option> 
</select> 
<span class="out"></span> 

¿Qué me falta?

Respuesta

14

intentar algo como esto:

$("select").change(function() { 
    var txt = $(this).val(); 
    $(this).next('span.out').text(txt); 
}).trigger('change');​ 
0

suena como usted desea utilizar jQuery next

+0

Es posible que funcione para añadir el texto al rango de medición, pero no ayudará a obtener el valor de selección. – Scott

3

Prueba esto:

$("select").each(function(){ 

    var select = $(this), 
     out = select.next(); 

    select.change(function() { 
     out.text(select.val()); 
    }); 

}).trigger('change'); 
+0

http://stackoverflow.com/questions/48239/getting-the-id-of-the-element-that-fired-an-event-using-jquery Parece que, en los controladores de eventos "esto" se refiere a la fuente del evento. – yilmazhuseyin

0

que pueda obtener el elemento de cambio de uso de $(this) dentro de la devolución de llamada de eventos . Pruebe a cambiar la línea

str = $("select option:selected").text(); 

a

str = $(this).find("option:selected").text(); 
1

Prueba esto:

$("select").change(function() { 
    var str = ""; 
    str = $(this).find(":selected").text(); 

    $(".out").text(str); 
}).trigger('change'); 
Cuestiones relacionadas