75 votes

Comment ajouter une option à une liste de sélection en jQuery ?

Ma liste de sélection s'appelle dropListBuilding . Le code suivant ne semble pas fonctionner :

 for (var i = 0; i < buildings.length; i++) {
     var val = buildings[i];
     var text = buildings[i];
     alert("value of builing at: " + i.toString() + " is: " + val);
     $("#dropListBuilding").addOption(val, text, false);
 }

Cette ligne meurt :

$("#dropListBuilding").addOption(val, text, false);

Quel est le droit d'ajouter des éléments à la liste déroulante en jQuery ? J'ai testé sans cette ligne et la variable buildings a bien mon élément de données.

0 votes

141voto

Haminh Nguyen Points 1496

Ne rendez pas votre code si compliqué. Vous pouvez le faire simplement comme ci-dessous en utilisant un itérateur de type foreach :

$.each(buildings, function (index, value) {
    $('#dropListBuilding').append($('<option/>', { 
        value: value,
        text : value 
    }));
});

13 votes

La seule chose que j'ajouterais à cela est la situation où vous voulez effacer la liste avant de la remplir. $('#dropListBuilding').html(''); Ceci, dans mon esprit, complète la réponse.

1 votes

@ShirleyCC seulement si c'est ce que l'utilisateur recherche. Il est très possible qu'il cherche à ce que la valeur soit la même que le texte lui-même.

0 votes

J'ajouterais aussi que vous devriez mettre l'objet dans une var en dehors de la boucle pour que jquery n'ait pas à le trouver dans le dom à chaque itération.

19voto

Soufiane Hassou Points 9789
$('#dropListBuilding').append('<option>'+val+'</option>');

0 votes

Ne pas ajouter si déjà ajouté ? Comment ? (j'ai une diapositive 1, une diapositive 2, je reviens en arrière, et je répète)

18voto

James Points 7234

Cette façon de faire a toujours fonctionné pour moi, j'espère que cela vous aidera.

var ddl = $("#dropListBuilding");   
for (k = 0; k < buildings.length; k++)
   ddl.append("<option value='" + buildings[k]+ "'>" + buildings[k] + "</option>");

7voto

duckyflip Points 6895

Votre code échoue parce que vous exécutez une méthode (addOption) sur l'objet jQuery (et cet objet ne supporte pas la méthode).

Vous pouvez utiliser la fonction Javascript standard comme ceci :

$("#dropListBuilding")[0].options.add( new Option("My Text","My Value") )

0 votes

Pouvez-vous m'indiquer une référence pour cette méthode ? Je ne pensais pas que quelque chose de ce genre existait, je pensais que la méthode DOM était .options.add(

0 votes

Bob, vous avez raison, j'ai modifié le code pour utiliser la méthode normale de JS pour ajouter une option.

2voto

Bob Points 34449

Il semble que vous vouliez ce plug-in car il suit votre code existant, peut-être que le fichier js du plug-in a été oublié quelque part.

http://www.texotela.co.uk/code/jquery/select/

var myOptions = {
"Value 1" : "Text 1",
"Value 2" : "Text 2",
"Value 3" : "Text 3"
} 
$("#myselect2").addOption(myOptions, false); 
// use true if you want to select the added options » Run

Prograide.com

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.

Powered by:

X