2010-08-13 7 views
6

Je dois obtenir la valeur de l'option sélectionnée (lorsqu'elle est modifiée) dans une liste de sélection et modifier le texte dans une plage à côté de la liste de sélection. Le problème est que je ne connais pas l'identifiant de la liste de sélection. Il y a beaucoup de différentes listes de sélection sur la page (5-25 +) et elles sont toutes créées dynamiquement, et donc je ne peux pas avoir l'id spécifié dans le .change(). Voici ce que j'ai:Modifier dynamiquement la valeur de sélection

JavaScript:

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

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

(. Bien sûr, cela ne fonctionne pas, met toutes les valeurs de sélection dans chaque travée)

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> 

Que manque-t-il?

Répondre

14

Essayez quelque chose comme ceci:

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

On dirait que vous voulez utiliser Essayez cette jQuery de next

+0

Il peut travailler pour ajouter le texte à la durée, mais ne sera pas aider à obtenir la valeur de sélection. – Scott

3

:

$("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-an-event-using-jquery ressemble, dans les gestionnaires d'événements "ceci" se réfère à la source de la un événement. – yilmazhuseyin

0

Vous pouvez obtenir l'élément modifié à l'aide $(this) dans le rappel d'un événement . Essayez de changer la ligne

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

à

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

Essayez ceci:

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

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