2010-10-26 9 views
0

J'ai combobox (en fait, plusieurs d'entre eux), avec des éléments qui sont ajoutés dynamiquement.jQuery - comment implémenter live() sur la zone de liste déroulante?

utilisant jQuery, je ne sais pas comment implémenter la fonction qui retourne id de l'élément sélectionné i combo ...

je sais qu'il faut être quelque chose en utilisant .live(), quelque chose comme

$(".foo").live("change", function() { 
do something; 
}); 

... mais je ne sais pas comment l'implémenter ici.

tnx dans adv!

Répondre

1

Vous cherchez quelque chose comme ça?

$(".foo").live("change", function() { 
    $(this).val(); // value of the changed item 
}); 
1

Utilisez le sélecteur :selected sur les éléments enfants de l'élément de sélection (options) appelés également

$(".foo").live("change").function(){ 
    var val = $(".foo").find(":selected").val(); 
    // pass val to some other method for work 
}); 

http://api.jquery.com/selected-selector/

1
$(".foo").live("change", function() { 
    alert($(this).attr("id")); // Id of the element 
}); 
+0

Je pense que c'est la réponse s'il voulait l'id de la sélection élément mais je pense que si vous lisez attentivement, il cherche la valeur de l'option sélectionnée – hunter

1

Vous pouvez utiliser $(this).val() pour trouver la valeur de l'élément qui a déclenché l'événement.

Il semble que d'autres me battent. Le mien est le même que @John et @Daniel.

Voici un jsfiddle pour le tester jsfiddle. Une chose à noter est que le live ne supporte pas la méthode de changement dans tous les navigateurs (IE 6 à 8, par exemple).

Une façon de contourner cela est d'utiliser la méthode déléguée, que je l'ai démontré here

Il ressemblerait à quelque chose comme:

$(parentElement).delegate(selector, 'change', function() { 
    //do something interesting here 
    //$(this).val() still works. 
}); 
Questions connexes