Chosen et Select2 sont les deux bibliothèques les plus populaires pour étendre les sélections.
Les deux semblent être activement maintenus, Chosen est plus ancien et prend en charge à la fois jQuery et Prototype.
Select2 est uniquement jQuery, sa documentation indique que Select2 est inspiré de Chosen, mais ne détaille aucune des améliorations apportées (le cas échéant) ou d'autres raisons de la réécriture.
Deux bibliothèques ont à peu près le même ensemble de fonctionnalités, la seule comparaison que j'ai trouvée est une page de test jsperf quelque peu peu concluante.
L'une de ces bibliothèques présente-t-elle des avantages par rapport à l'autre?
is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU General Public License version 2
Réponses:
À partir de Select2 3.3.1, voici ce qui est documenté dans son fichier README.md
la source
IMHO Chosen est "maintenu" mais pas "activement maintenu". 341 problèmes et 51 pull requests pour Chosen. Select2 a 128 problèmes et 25 pull requests. Je pense que le modèle pour ceux-ci est fondamentalement
Quel que soit celui que vous choisissez, si votre cas d'utilisation est exactement dans leur zone idéale, l'un ou l'autre fonctionnera. Sinon, vous devrez éventuellement écrire les vôtres ou les personnaliser fortement. Dans les deux cas, le choix de celui qui est spécifiquement n'est pas si important. Je suppose que je suis du côté de @Andy Ray et @paul ici que Select2 est probablement le meilleur choix initial.
la source
Une autre différence qui mérite d'être mentionnée est qu'elle
Chosen
est développée dansSass
etCoffeeScript
alors queSelect2
c'est clairCSS
etJS
. C'est mon option personnelleSass
et ceCoffeeScript
sont des couches de complexité inutiles qui rendent le débogage difficile.Après avoir essayé les deux, j'ai décidé de n'utiliser ni l'un ni l'autre - essayer d'obtenir la
Select2
fonctionnalité de création d'élément s'avère être une affaire très poilue car vous ne pouvez tout simplement pas le faire une fois attaché à des<select>
éléments - cela ne me semblait tout simplement pas bien pensé aux cerceaux que j'aurais sauter à travers.J'ai décidé d'utiliser selectize.js qui ajoute simplement le nouvel
<option>...</option>
élément au DOM du formulaire - et c'est sain. Il utilise égalementLESS
- mais je contournerais cela et adapter simplement le compiléCSS
directement dans votre projet.la source
selectize.js
utilise moins . Est-ce moins qu'une impasse technologiqueSass
?choisi.js contre select2.js
ps. J'essaierai de mettre à jour cette réponse lorsque j'en saurai plus sur les points manquants
la source
Tout d'abord, laissez-moi vous dire que Chosen et Select2 sont deux excellents plugins et c'est mon expérience personnelle à propos de Chosen. Tout ce qu'ils disent est vrai concernant Chosen.
Le problème signalé par Pēteris Caune avec le
select
est de 2 ans et il n'y a toujours pas de solution officielle. Il n'y a tout simplement pas de bonne documentation pour l'API. Il a été souligné (montre numéro 671) à plusieurs reprises mais il n'y a toujours rien. Il leur a fallu près de 2 ans pour résoudre ce problème où choisi ne fonctionnerait fondamentalement pas si vous cachaiez le div avecoverflow:hidden
avant de le montrer (et vous devez utiliser unewitdh:X%
option que vous ne sauriez pratiquement jamais si vous ne cherchez pas le problème).Je dirais que le problème principal est la vitesse de correction, comme l'a dit DelvarWorld dans le numéro 92:
J'ai d'abord choisi Chosen pour sa licence MIT mais j'avais tous ces problèmes (coupe de liste déroulante, ne pas trouver l'API, recherche pendant des heures pour le débordement caché), j'ai donc décidé de passer à select2 car il a une meilleure documentation, pas de bug de coupe de liste déroulante et des correctifs plus rapides.
la source
Une fonctionnalité qui fonctionne dans Select2 mais ne fonctionne pas dans Chosen, est
select
l'élément intérieur qui aoverflow: hidden
ouoverflow: auto
.Problème correspondant pour Chosen: https://github.com/harvesthq/chosen/issues/86
la source
.chosen-drop { z-index: 999999 !important;}
pour résoudre ce problème avec choisiQuelques différences que j'ai trouvées en travaillant avec ces deux plugins:
Avec select2, vous pouvez effectuer une recherche à n'importe quel endroit de l'option. Par exemple, si vous avez une option appelée ABCDEFG et que vous tapez CDE, vous obtiendrez cette option dans les résultats de la recherche, mais avec choisi, vous devez taper AB .. et ainsi de suite pour obtenir les résultats.
J'ai constaté qu'avec des ensembles de données plus volumineux, choisi semble être plus rapide que select2, en particulier dans IE.
la source
Kingdom
sur leur page d'exemple retournera,United Kingdom
ce qui semble être une manière très logique de le faire et vous pouvez également spécifier$("#element").chosen({ search_contains: true });
.Select2 prend en charge le mobile, tandis que Chosen se désactive spécifiquement sur les iPod, les iPhones et les mobiles Android. Si vous souhaitez utiliser des boîtes de sélection "étendues" sur mobile, cela facilite votre choix.
la source
Mon expérience avec Select2 a été excellente sur le bureau, mais sur les appareils mobiles tactiles très variée, avec certaines bizarreries toujours présentes. Par exemple, sur xperia st15i avec ics et le menu déroulant du navigateur de stock se fermait toujours à cause du vol du clavier. Le seul moyen de le rouvrir est de toucher le menu des dizaines de fois, de maintenir le doigt pendant une seconde et d'autres magie vaudou. Ou pour commencer à taper pendant que la liste déroulante est fermée, et combien d'utilisateurs le comprendront?
Selectize.js semble être beaucoup plus fluide que Select2, mais il a également des problèmes sur son propre mobile, par exemple lorsque la valeur est sélectionnée ou saisie, il déplace la page complètement vers la gauche pour une raison quelconque. De plus, sur les anciens appareils Android 2.x qui ne prennent pas en charge le débordement, il est impossible de sélectionner au-delà des quelques options principales, car le clavier ne s'affiche pas. :(
Il faut encore tester Chosen et ce n'est peut-être pas une si mauvaise idée d'être désactivé pour les appareils mobiles après tout, mais à la fin, le bon vieux menu déroulant fonctionne toujours et partout.
Mise à jour: maintenant, j'ai également testé Chosen, et c'est mieux dans un domaine: cela ne fonctionne pas sur mobile par défaut (super!), Mais il a des problèmes de filtrage des mots. Par exemple, ne recherche pas au milieu des mots, et si vous utilisez & nbsp hack pour les aligments, il ignorera également les options complètes. Retour à la planche à dessin.
la source
search_contains: true
à vos options. Voir récoltehq.github.ioPourquoi j'ai choisi select2 sur Chosen
La caractéristique clé de select2, qu'aucun autre contrôle n'a auto-magiquement, est "Effacer toutes" les sélections avec le 'x' dans la main droite du contrôle. C'est une fonctionnalité qui tue pour mon application. Je ne sais pas pourquoi d'autres bibliothèques d'amélioration de balises sélectionnées n'ont pas cette fonctionnalité.
la source
Select2 prend en charge AJAX Chosen ne
Select 2 est un peu plus lourd que celui choisi.
Je suis passé à Select2 car aucun support officiel pour les opérations ajax.
la source