Comment puis-je obtenir toutes les options d'une sélection via Jquery en passant sur son ID ?
Edit : Je cherche seulement à obtenir leurs valeurs, pas le texte.
Comment puis-je obtenir toutes les options d'une sélection via Jquery en passant sur son ID ?
Edit : Je cherche seulement à obtenir leurs valeurs, pas le texte.
Aucune des opérations JavaScript ne nécessite jQuery. jQuery est une question de choix pour simplifier les opérations JS.
Vous pouvez également faire : $("#id option").each(function(name, val) { var opt=val.text ; }) ;
+1. N'ayez pas recours à la magie complexe des sélecteurs de jQuery pour des choses qui ont déjà des implémentations assez efficaces intégrées dans le bon vieux DOM.
Pourquoi pas, @bobince ? Si vous utilisez principalement jQuery, c'est plus rapide à la fois parce qu'il y a moins de code à écrire et parce qu'il est plus rapide de ne pas essayer de savoir si vous devez passer au javascript normal dans ce cas. Et votre code est plus cohérent.
$.map
est probablement le moyen le plus efficace de le faire.
var options = $('#selectBox option');
var values = $.map(options ,function(option) {
return option.value;
});
Vous pouvez ajouter des options de modification à $('#selectBox option:selected')
si vous ne voulez que ceux qui sont sélectionnés.
La première ligne sélectionne toutes les cases à cocher et place leur élément jQuery dans une variable. Nous utilisons ensuite l'élément .map
de jQuery pour appliquer une fonction à chacun des éléments de cette variable ; nous ne faisons que renvoyer la valeur de chaque élément, car c'est tout ce qui nous intéresse. Comme nous les renvoyons à l'intérieur de la fonction map, celle-ci construit en fait un tableau des valeurs, comme demandé.
C'est la solution la plus élégante, selon moi. La carte est une construction très puissante qui convient exactement à cette situation.
J'aime beaucoup votre solution - c'est l'approche que j'ai adoptée. Cependant, si vous ne voulez que les valeurs sélectionnées, c'est encore plus trivial : $('#selectBox').val()
retournera un tableau des valeurs sélectionnées.
Bonjour, @PCasagrande J'ai un attribut personnalisé nommé 'data-type'. Comment puis-je obtenir la valeur de cet attribut en utilisant votre solution ? Ce que je fais est 'option.data-type', mais cela me donne NaN. Merci d'avance.
Quelques réponses utilisent each
, map
est une meilleure alternative ici, à mon avis :
$("select#example").children().map(function() {return $(this).val();}).get();
Il y a (au moins) deux map
dans jQuery, la réponse de Thomas Petersen utilise "Utilities/jQuery.map" ; cette réponse utilise "Traversing/map" (et donc un code un peu plus propre).
Edit, correction : Cela dépend de ce que vous allez faire avec les valeurs. Si vous voulez, disons, retourner les valeurs d'une fonction, map
est probablement la meilleure solution. Mais si vous voulez utiliser les valeurs directement, vous voudrez probablement each
.
Vous pouvez en fait utiliser this.value au lieu de $(this).val() ici. Vous seriez également mieux servi en trouvant les enfants dans le sélecteur initial (option #exemple). Joli coup avec le get() à la fin.
@Alex Barret : Eh bien, il est possible de résoudre ce problème sans utiliser jQuery du tout. L'appel à jQuery avec un élément comme argument va juste envelopper l'élément dans un objet jQuery (c'est-à-dire pas de traversée d'arbre, c'est-à-dire pas si cher). Donc peut-être qu'en tant que micro-optimisation, oui.
Carte FTW. C'est exactement comme ça que ça devrait être fait. Le get() à la fin semble inutile, cependant (cela retourne le noeud DOM, et val() nous donne déjà une chaîne, donc... ?) var opts = $('#cm_amt option').map( function() { return parseInt($(this).val()) ; } ) ;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.