2010-10-13 7 views
26

J'ai dropdown <select> avec id my_dropdown. Je permets le multi-sélection. Je sais comment tirer la valeur sélectionnée (s) en utilisant jquery:jquery obtenir toutes les valeurs déroulantes

var values = $('#my_dropdown').val(); 

Cela retourne un tableau de valeurs si je sélectionne plusieurs. J'ai également besoin d'obtenir toutes les valeurs dans la liste déroulante indépendamment de ce qui est sélectionné. Comment puis-je utiliser jquery de manière similaire pour obtenir toutes les valeurs dans la liste déroulante étant donné cet identifiant?

+0

meilleure solution trouvée dans http://stackoverflow.com/questions/590163/how-to-get-all -options-d'-un-select-using-jquery –

Répondre

30

Que diriez-vous quelque chose comme:

var values = []; 
$('#my_dropdown option').each(function() { 
    values.push($(this).attr('value')); 
}); 
5

On dirait:

var values = $('#my_dropdown').children('option').map(function(i, e){ 
    return e.value || e.innerText; 
}).get(); 

Voir en action: http://www.jsfiddle.net/YjC6y/16/

Référence: .map()

+1

return e.value; (Si vous voulez des valeurs au lieu du texte affiché) Sinon, c'est une excellente solution! +1 –

+0

J'oublie toujours la fonction 'map' +1 –

4

Exemple:http://jsfiddle.net/FadHu/

var opts = $('#my_dropdown')[0].options; 

var array = $.map(opts, function(elem) { 
    return (elem.value || elem.text); 
}); 

L'élément <select> a une liste des options dans sa propriété options. Ensuite, use $.map(), qui renvoie un tableau, pour obtenir la propriété value ou text de l'option.

(Notez le $.map() se comporte un peu différemment de $(element).map(). Peut-être un peu délicat.)

+1

J'aime le retour au texte s'il n'y a pas de valeur: p –

+0

@John - Oui, nécessaire pour IE6, ou si le' value' pour une raison quelconque est un chaîne vide. Sinon, la plupart des navigateurs vous donneront le 'text' s'il n'y a pas d'attribut' value' présent. – user113716

Questions connexes