Avez-vous enveloppé votre script dans la fonction $(document).ready()
?
Cela devrait garantir qu'aucun de vos scripts ne s'exécute tant que la page n'a pas été entièrement chargée.
Il est possible que .chosen()
soit en cours d'exécution avant que votre page ne charge les éléments initiaux.
Plus d'info here
$(document).ready(function()
{
//following code used to generate 2000 items in the select element
//in order to try and replicate the issue.
var counter = 2000;
for(var i=1; i <= counter; i++)
{
$(".chosen-select").append("<option> item " + i + "</option>");
}
//Initialise JQuery chosen library on select element
$(".chosen-select").chosen();
});
<!-- Links to external resources and JQuery 2.1.1 !-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.1.0/chosen.jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/chosen/1.1.0/chosen.min.css">
<!-- HTML !-->
<select multiple class="chosen-select"></select>
Aussi, assurez-vous que vous faites référence à la JQuery bibliothèque avant vous faites référence à la bibliothèque choisie dans votre balisage.
Ajoutez 'display: none;' au multiselect et au chargement du document, rendez-le à nouveau visible. – Deckerz
Rappelez-vous que pour chaque option de l'élément select, un élément est ajouté au DOM pour chacun d'eux en utilisant JQuery. Il semble que l'élément select s'affiche avant que la page ne soit prête. Utilisez-vous la fonction $ (document) .ready() avant d'appeler .chosen()? –