Je me suis efforcé d'utiliser Stylish Select Box
avec des éléments créés après le chargement de la page sans succès. Pour comprendre le problème, vous devez d'abord le reproduire. Je sais que ce qui suit peut sembler un peu ennuyeux mais s'il vous plaît continuez à lire si vous avez 5 minutes de temps libre.Le plugin Stylish-Select de jQuery ne fonctionne pas sur les éléments créés après chargement de la page
Vous pouvez également obtenir un exemple complet here pour voir le problème directement.
D'abord, vous aurez besoin d'un élément <select>
. Maintenant, liez jquery.stylish-select.js
à votre élément <select>
en utilisant quelque chose comme $('select').sSelect();
après que le script cache l'élément <select>
et crée un ensemble de DIVs en dessous. Maintenant, votre page doit ressembler à ceci:
<select style="display:none;">
<option>1</option>
<option>2</option>
</select>
<div class=newListSelected>
<!-- Some other stuff(not important). -->
</div>
Maintenant, ajoutez un autre élément <select>
à la même page avec quelque chose comme $('body').append('<select><option>1</option><option>2</option></select>')
et utiliser $(.newListSelected).remove();
pour supprimer les DIVs qu'elle a créée pour l'option `drainant. J'espère que je suis assez clair.
Après cela, vous devez avoir les éléments suivants sur la page:
<select style="display:none;">
<option>1</option>
<option>2</option>
</select>
<select>
<option>1</option>
<option>2</option>
</select>
dernier, il suffit d'appeler $('select').sSelect();
une fois de plus. Il devrait créer DIVs sous les deux de vos <select>
éléments. Maintenant, voici le problème, la première boîte de sélection représentée par les DIVs ne se comporte pas correctement.
Vous pouvez également obtenir un exemple complet here pour voir le problème directement.
Normalement lorsque vous choisissez une option dans la zone de sélection représentée par les DIVs, il doit mettre à jour selectedIndex
de l'élément <select>
original (propriété DOM) à l'indice correspondant de l'option choisie (0 pour la première option 1 pour la seconde .. etc). Mais si vous regardez de plus près, vous verrez sa valeur selectedIndex
changer à -1 pour n'importe quelle option.
Comme je suis vraiment nouveau sur Javascript, je n'ai aucune idée de son comportement. Ce à quoi je ne pouvais que penser serait dû au fait que le premier élément est lié deux fois à , causant ainsi des problèmes DOM.
Oui .. Je tentais de trouver un moyen de revenir sSELECT, mais je ne pouvais pas trouver quoi que ce soit à l'intérieur jquery.stylish-select.js capable de le faire :( – user435216