Avoir une collection potentiellement infinie de listes déroulantes, en leur donnant tous la même classe, besoin d'être en mesure d'accéder, en boucle et collecter la valeur sélectionnée sur l'option de tous les déroulants indépendamment du nombre qu'il pourrait y avoir. La forme finale devrait être quelque chose comme 5,6,7,6,4,2,3,4,3,4 comme une liste délimitée par des virgules des valeurs sélectionnées de toutes les listes déroulantes.Comment utiliser JQuery pour accéder à toutes les listes déroulantes d'une classe spécifique et faire une boucle dans celles-ci?
Répondre
var ids = $("select.classname > option:selected").map(function(n, i) {
return $(n).val();
}).join(",");
Pour expliquer ce que fait, avec
- Tout d'abord, il sélectionne toutes les options sélectionnées dans les menus déroulants données (identifiés par « classname »);
- Il passe chaque option sélectionnée à une fonction de rappel;
- Cette fonction de rappel renvoie la valeur de l'option sélectionnée; Parce que vous avez appelé map sur la matrice d'options sélectionnées, vous avez maintenant un tableau de valeurs utilisant la méthode
map()
; - La fonction
join()
transforme ce tableau en une liste délimitée par des virgules.
Par exemple:
<select class="classname">
<option value="1">One</option>
<option value="2" selected>Two</option>
<option value="3" selected>Three</option>
</select>
<select class="classname">
<option value="4">Four</option>
<option value="5" selected>Five</option>
</select>
premier utilise $()
pour construire un objet jQuery des options sélectionnées (2, 3 et 5), des cartes de la valeur des attributs dans un tableau de {2,3,5}
puis les rejoint en une chaîne délimitée par des virgules "2,3,5"
.
Il semble que la réponse présentée par Cletus ait deux problèmes à résoudre pour ma version de jQuery (1.6.2). Le code ci-dessous a fonctionné correctement pour moi et alerte "3,5" quand il est utilisé contre l'exemple de HTML dans le post de Cletus. Notez qu'il trouve la dernière option sélectionnée et non les deux options sélectionnées dans le premier bloc de sélection HTML. Tout d'abord, il utilisait un mauvais argument dans le rappel de la fonction de la carte. Je avais besoin de changer le n à i: return $(n).val()
vs return $(i).val()
En second lieu, il retournait un objet jQuery qui devait être transformé en un tableau avant que la méthode du tableau « rejoindre » pourrait être utilisé: .toArray().join(",")
Une fois que ces 2 modifications mineures ont été faites, la réponse de Cletus a parfaitement fonctionné pour moi dans jQuery 1.6.2
- 1. Comment combiner les dates/heures sélectionnées dans les listes déroulantes pour les utiliser dans MySQL Query?
- 2. Création d'une classe à utiliser pour remplir des listes déroulantes, des grilles, etc., en C#
- 3. html helpers pour les listes déroulantes?
- 4. Listes déroulantes liées et charge div
- 5. Garder les listes déroulantes DRY dans une application web
- 6. Comment créer des listes déroulantes?
- 7. Comment obtenir la valeur de toutes les autres listes déroulantes lorsque l'une d'elles est modifiée
- 8. Comment utiliser jQuery pour sélectionner des ID qui ne se trouvent pas dans une classe spécifique
- 9. C++ Comment faire une boucle à travers une liste de struct, et accéder à leurs propriétés
- 10. Comment puis-je ajouter des listes déroulantes en cascade dans une grille pour les modifications?
- 11. Comment obtenir un élément spécifique dans la boucle jQuery.each
- 12. Comment accéder à l'enfant div spécifique d'une certaine classe?
- 13. Comment enregistrer des données à partir de listes déroulantes?
- 14. Supprimer une classe spécifique dans la page (jQuery)
- 15. Comment faire défiler en douceur pour les listes dans Swing
- 16. Comment faire pour boucler une image de fond css avec Jquery toutes les quelques secondes?
- 17. Comment remplacer les équivalents pour une classe spécifique de NHibernate
- 18. Printemps MVC: liaison 3 listes déroulantes à une propriété de date dans SimpleFormController
- 19. Faire des zones de texte, des cases à cocher, des listes déroulantes dans DetailsView 508 conforme
- 20. Ne pas afficher le code HTML et les entités dans les listes déroulantes
- 21. Attachez EventReceiver à toutes les listes d'un site SharePoint Server
- 22. Comment pouvez-vous faire une association sans utiliser toutes les clés d'entité dans l'infrastructure de l'entité?
- 23. Enregistrer des paramètres dans une classe et comment y accéder
- 24. Quelle classe PHP utiliser pour accéder à NNTP?
- 25. Comment utiliser jquery pour faire défiler horizontalement
- 26. Python - impression de toutes les références à une instance spécifique
- 27. Maintien des données côté client pour rechercher dans les listes déroulantes dans ASP.NEt
- 28. JavaScript, DHTML, jQuery: Comment implémenter la relation de détail maître bidirectionnel dans 3 listes déroulantes html (cases à cocher)
- 29. Créer trois listes déroulantes en cascade avec Ajax dans MVC
- 30. Ajout de 2 listes déroulantes à la table associée
pouvez-vous expliquer ce qui se passe ici? quoi de mieux avec le synatx à l'intérieur du $()? Je vais boucler la chose .map sur la documentation jquery ... qu'est-ce que n et moi? – BigOmega
woa - c'est fou ... J'ai encore du mal à suivre une chose: quand est-ce que la fonction est passée en .map() réellement appelée? et combien de fois est-il appelé? Sinon, c'est logique, c'est assez chic. – BigOmega
La fonction transmise à map() est un rappel. Il est appelé une fois par élément correspondant. Voir http://docs.jquery.com/Traversing/map – cletus