[JQuery] créer un <select> trié
KX
Messages postés
19031
Statut
Modérateur
-
coeus Messages postés 3296 Statut Membre -
coeus Messages postés 3296 Statut Membre -
Bonjour,
Je débute en JQuery, et je n'arrive pas à manipuler les balises <select> comme je le voudrais.
J'ai une balise <select id="start"></select> dans mon code html, et je veux la remplir.
J'ai un objet "marks" qui contient les données que je veux et qu'on peut manipuler comme ceci :
Mon problème, c'est que mes options apparaissent dans l'ordre où je les ai ajoutés, c'est à dire l'ordre des "id". J'avoue que c'était prévisible, mais ce n'est pas ce que je veux.
Ce que je voudrais c'est avoir les options dans l'ordre des "index" (en conservant "null" en tout premier), donc comme c'est des entiers j'aimerais avoir les valeurs successives :
Est-ce que quelqu'un saurait me débloquer ce problème ? Je l'en remercie d'avance !
--
La confiance n'exclut pas le contrôle
Je débute en JQuery, et je n'arrive pas à manipuler les balises <select> comme je le voudrais.
J'ai une balise <select id="start"></select> dans mon code html, et je veux la remplir.
J'ai un objet "marks" qui contient les données que je veux et qu'on peut manipuler comme ceci :
$("#start").append(new Option("Départ","null"));
for (var id in marks)
{
var m = marks[id];
/*
m["id"]; // un string : on a toujours marks[x]["id"]==x
m["index"]; // un entier unique entre 1 et marks.length
m["tag"]; // un string
*/
// Voici ce que j'ai essayé de faire :
$("#start").append(new Option(m["tag"],m["index"]));
}
Mon problème, c'est que mes options apparaissent dans l'ordre où je les ai ajoutés, c'est à dire l'ordre des "id". J'avoue que c'était prévisible, mais ce n'est pas ce que je veux.
Ce que je voudrais c'est avoir les options dans l'ordre des "index" (en conservant "null" en tout premier), donc comme c'est des entiers j'aimerais avoir les valeurs successives :
<select id="start"> <option value="null">Départ</option> <option value=1>Toto</option> <option value=2>Tata</option> <option value=3>Titi</option> ... </select>
Est-ce que quelqu'un saurait me débloquer ce problème ? Je l'en remercie d'avance !
--
La confiance n'exclut pas le contrôle
1 réponse
-
Salut,
Mmmmmmm je pense que t'auras pas trop le choix. Ce qui me paraît le mieux, c'est de mettre toutes tes valeurs dans un array, puis ordonner cet array à ta convenance, et alors seulement créer ta liste avec des append()...-
-
-
Oui, oui, je reviens, mais il fallait que je regarde ce que ça donne avant ^^
var marksT=[]; $.each(marks, function(id,m) { marksT[marksT.length]=m; }); marksT.sort(function(a,b) { return a["index"]-b["index"]; }); $("#start").append(new Option("Départ","null")); $.each(marksT, function(index, m) { $("#start").append(new Option(m["tag"],m["index"])); });
On va dire que le problème est résolu, mais je reste ouvert à toute proposition améliorante ;-) -
-