155 votes

Quelles sont les différences entre Chosen et Select2 ?

Choisi y Sélectionner2 sont les deux bibliothèques les plus populaires pour étendre les boîtes de sélection.

Les deux semblent être activement maintenus, Chosen est plus ancien et supporte à la fois jQuery et Prototype.

Select2 est uniquement jQuery, sa documentation indique que Select2 est inspiré de Chosen, mais ne détaille pas les améliorations apportées (le cas échéant) ou les autres raisons de la réécriture.

Les deux bibliothèques ont à peu près les mêmes fonctionnalités, la seule comparaison que j'ai trouvée est une page de test jsperf peu concluante.

L'une de ces bibliothèques présente-t-elle des avantages par rapport à l'autre ?

90voto

Chieh Points 1683

À partir de Select2 3.3.1, voici ce qui est documenté dans son README.md

Qu'est-ce que Select2 supporte que Chosen ne supporte pas ?

  • Travailler avec de grands ensembles de données : Chosen nécessite le chargement de l'ensemble des données en tant que option dans le DOM, ce qui le limite à travailler avec des ensembles de données petits ensembles de données. Select2 utilise une fonction pour trouver des résultats à la volée, ce qui lui permet de charger partiellement les résultats.
  • Pagination des résultats : Puisque Select2 travaille avec de grands ensembles de données et ne charge qu'une petite quantité de résultats à la fois, il doit supporter la pagination. pagination. Select2 appelle la fonction de recherche lorsque l'utilisateur fait défiler les résultats jusqu'au bas de l'ensemble des résultats chargés. l'utilisateur fait défiler jusqu'au bas de l'ensemble des résultats chargés, ce qui permet un "défilement défilement infini" des résultats.
  • Balisage personnalisé des résultats : Chosen ne prend en charge que le rendu des résultats sous forme de texte, car c'est le seul balisage pris en charge par le système de gestion des résultats. option balises. Select2 fournit un point d'extension qui peut être utilisé pour produire n'importe quel type de balisage pour représenter les résultats. type de balises pour représenter les résultats.
  • Possibilité d'ajouter des résultats à la volée : Select2 offre la possibilité d'ajouter des résultats à partir du terme de recherche saisi par l'utilisateur, ce qui lui permet d'être utilisé pour le balisage.

40voto

Peter Lyons Points 47794

IMHO Chosen est "maintenu" mais pas "activement maintenu". 341 problèmes et 51 demandes de pull pour Chosen. Select2 a 128 problèmes et 25 demandes de téléchargement. Je pense que le modèle pour ces projets est le suivant

  • choisissez celle qui est superficiellement la plus attrayante pour vous.
  • l'utiliser dans une ou deux applications
  • se heurter à des problèmes ou à des limites de personnalisation
  • peut-être essayer de travailler avec la communauté par le biais des problèmes et des demandes de retrait.
  • éventuellement, vous en aurez marre et vous construirez le vôtre à l'aide de ce que vous avez appris au cours de ce processus.

Quel que soit votre choix, si votre cas d'utilisation se situe exactement dans leur zone de confort, l'un ou l'autre fonctionnera. Dans le cas contraire, vous devrez éventuellement écrire votre propre code ou le personnaliser fortement. Dans les deux cas, le choix de l'un ou l'autre n'est pas si important. Je pense que je suis d'accord avec @Andy Ray et @paul pour dire que Select2 est probablement le meilleur choix initial.

21voto

Daniel Sokolowski Points 2207

Une autre différence qui mérite d'être mentionnée est que Chosen est développé dans Sass y CoffeeScript alors que Select2 est simple CSS y JS . Je pense personnellement que Sass y CoffeeScript sont des couches inutiles de complexité.

Après avoir essayé les deux, j'ai décidé de n'utiliser ni l'un ni l'autre. Select2 créer la fonctionnalité d'un élément s'avère être une affaire très délicate car vous ne pouvez tout simplement pas le faire lorsqu'il est rattaché à <select> éléments - je n'avais pas l'impression que les obstacles que je devais franchir étaient bien pensés.

J'ai décidé d'utiliser selectize.js qui ajoute simplement la nouvelle <option>...</option> au DOM du formulaire - et c'est normal. Il utilise également LESS - mais je contournerais ça et adapterais juste la compilée CSS directement dans votre projet.

13voto

zipp Points 352

Tout d'abord, laissez-moi vous dire que Chosen et Select2 sont deux excellents plugins et ceci est mon expérience personnelle sur Chosen. Tout ce qu'ils disent est vrai concernant Chosen.

El numéro pointée par Pēteris Caune avec le select a deux ans et il n'y a toujours pas de correction officielle. Il n'y a tout simplement pas de bonne documentation pour l'API. Cela a été signalé (voir le numéro 671) à plusieurs reprises, mais il n'y a toujours rien. Il leur a fallu presque deux ans pour résoudre ce problème. numéro où le choix ne fonctionnerait pas si vous cachiez le div avec overflow:hidden avant de le montrer (et vous devez utiliser un fichier witdh:X% que l'on ne connaît pas si l'on ne cherche pas le problème).

Je dirais que le principal problème est la vitesse de réparation comme l'a dit DelvarWorld dans le numéro 92 :

Ma demande de retrait corrige ce problème, mais comme mon autre demande et de nombreuses demandes de retrait, elles sont ignorées. celles qui ont été choisies, elles sont ignorées. Ce projet a trop de contributeurs avec une base de code trop petite.

J'ai d'abord choisi select2 pour sa licence MIT mais j'ai eu tous ces problèmes (coupure de la liste déroulante, impossibilité de trouver l'API, recherche pendant des heures de l'overflow caché), j'ai donc décidé de passer à select2 car il a une meilleure documentation, pas de bug de coupure de la liste déroulante et des corrections plus rapides.

9voto

Pēteris Caune Points 13662

Une fonctionnalité qui fonctionne dans Select2 mais pas dans Chosen, est select à l'intérieur d'un élément qui a overflow: hidden o overflow: auto .

enter image description here

Numéro correspondant à Chosen : https://github.com/harvesthq/chosen/issues/86

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X