L'ajout de optgroups dynamiquement à l'aide de jQuery
<select id="myElement" multiple="multiple">
<option value="1">Category Type</option>
<option value="158">itemOne</option>
<option value="157">itemTwo</option>
<option value="7">My Type</option>
<option value="20">itemThree</option>
<option value="21">itemFour</option>
<option value="22">itemFive</option>
<option value="8">Category Yet Another</option>
<option value="31">itemCheese</option>
<option value="32">itemBrain</option>
</select>
J'ai besoin de convertir dynamiquement ce donc que la "Catégorie" des options (tout ce qui ne commence pas par "le point") est un "optgroup", d'emballage whaterver vient après lui jusqu'à la prochaine Catégorie de l'option, de sorte que le ci-dessus pourrait finir par ressembler à:
<select id="myElement" multiple="multiple">
<optGroup label="Category Type">
<option value="158">One</option>
<option value="157">Two</option>
</optGroup>
<optGroup label="My Type">
<option value="20">Three</option>
<option value="21">Four</option>
<option value="22">Five</option>
</optGroup>
<optGroup label="Category Yet Another">
<option value="31">Cheese</option>
<option value="32">Brain</option>
</optGroup>
</select>
Comment puis-je effectuer une itération en cours et de modifier les valeurs pour obtenir l'effet désiré à l'aide de jQuery?
Solution: reportez-vous à jsbin.com/nagohevoyi/1/edit?html,js,sortie
AJS.$("#select2-example").append('<optgroup id="opt-gr1" label="Group test"></optgroup>'); AJS.$("#opt-gr1").append('<option>test</option>'); AJS.$("#opt-gr1").append('<option>test2</option>');
OriginalL'auteur key2starz | 2012-09-24
Vous devez vous connecter pour publier un commentaire.
Vous devez effectuer une itération sur les
option
éléments et de les regrouper en fonction de leur contenu. À l'aide de jQuery rend plus facile que juste de la pure API DOM:http://jsfiddle.net/kpykoahe/2/
superbe !! aidé tout de suite
OriginalL'auteur
Vous pouvez utiliser filtre() pour correspondre à la
<option>
éléments qui vont devenir des groupes. Ensuite, vous pouvez effectuer une itération sur eux et de les appeler nextUntil() sur le même élément définie pour correspondre à des options autres (commenextUntil()
s'arrête lorsqu'il rencontre un membre de l'ensemble, c'est à dire l'option suivante qui devrait devenir un groupe).À partir de là, vous pouvez utiliser wrapAll() sur ces
<option>
éléments pour créer leur<optgroup>
élément, puis d'appeler supprimer() sur le<option>
élément qui est devenu un groupe. Quelque chose comme:Vous pouvez voir les résultats dans ce violon.
+1 cette approche a fonctionné pour moi, cependant, il a travaillé seulement après avoir fait une actualisation de la multiselect - $("#myElement").multiselect('refresh'); donc cela peut sauver quelqu'un d'autre une demi-journée de casse-tête
OriginalL'auteur
Ma mise en œuvre:
Démo: http://jsfiddle.net/HUHRz/1/
OriginalL'auteur
OriginalL'auteur