Chosen и Select2 - еще две популярные библиотеки для расширения полей выбора.
Оба, похоже, активно поддерживаются, Chosen старше и поддерживает как jQuery, так и Prototype.
Select2 - это только jQuery, его документация гласит, что Select2 вдохновлен Chosen, но не детализирует какие-либо улучшения (если таковые имеются) или другие причины переписывания.
Две библиотеки имеют практически одинаковый набор функций, единственное сравнение, которое я нашел, это несколько неубедительная тестовая страница jsperf.
Есть ли у этих библиотек какие-либо преимущества перед другими?
is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU General Public License version 2
Ответы:
Начиная с версии Select2 3.3.1, то, что задокументировано в его файле README.md, приведено ниже.
источник
ИМХО Выбранный «поддерживается», но не «активно поддерживается». 341 выпусков и 51 запрос на выбор для Chosen. У Select2 есть 128 проблем и 25 запросов на получение. Я думаю, что образец для них в основном
Независимо от того, что вы выберете, если ваш вариант использования точно в их сладком месте, любой из них будет работать. Если нет, вам в конечном итоге придется написать свои собственные или сильно настроить их. В любом случае, выбор которого не так важен. Полагаю, что на стороне @Andy Ray и @paul, что Select2, вероятно, лучший начальный выбор.
источник
Еще одно различие, о котором стоит упомянуть, заключается в том, что
Chosen
оно разработано вSass
иCoffeeScript
тогда какSelect2
является простымCSS
иJS
. Это мой личный выбор,Sass
иCoffeeScript
это ненужные уровни сложности, которые затрудняют отладку.Попробовав и то и другое, я решил не использовать ни того, ни другого - попытка получить
Select2
функциональность создания элемента оказывается очень сложным делом, поскольку вы просто не можете сделать это, когда привязаны к<select>
элементам - просто не очень хорошо продуманы обручи, которые у меня были бы перепрыгнуть.Я остановился на использовании selectize.js, который просто добавляет новый
<option>...</option>
элемент в DOM формы - и это нормально. Он также используетLESS
- но я бы обошел это и просто приспособил скомпилированныйCSS
прямо в вашем проекте.источник
selectize.js
использует меньше . Это меньше технологического тупика, чемSass
есть?selected.js против select2.js
пс. Я постараюсь обновить этот ответ, когда узнаю больше о пропущенных точках
источник
Во-первых, позвольте мне сказать вам, что Chosen и Select2 - это два замечательных плагина, и это мой личный опыт работы с Chosen. Все, что они говорят, верно в отношении Избранных.
Вопрос указал Петерис Цауне с
select
2 -х лет и до сих пор нет никакого официального исправления. Просто нет хорошей документации по API. Это было указано (смотреть выпуск 671) много раз, но все еще ничего нет. Им потребовалось почти 2 года, чтобы решить эту проблему, где выбранное не сработало бы, если бы вы спрятали div,overflow:hidden
прежде чем показывать его (и вы должны использоватьwitdh:X%
опцию, о которой вы в принципе никогда не узнаете, если не будете искать проблему).Я бы сказал, что основная проблема - это скорость исправления, как сказал DelvarWorld в выпуске 92:
Сначала я выбрал Chosen для его лицензии MIT, но у меня были все эти проблемы (выпадающий список, не находил API, часами скрывался переполнение), поэтому я решил переключиться на select2, потому что он имеет лучшую документацию, нет ошибки сокращения выпадающего списка и быстрее исправляет.
источник
Одна функция, которая работает в Select2, но не работает в Chosen, - это
select
элемент внутри, который имеетoverflow: hidden
илиoverflow: auto
.Соответствующий вопрос для Избранных: https://github.com/harvesthq/chosen/issues/86
источник
.chosen-drop { z-index: 999999 !important;}
это,Некоторые различия, которые я обнаружил, работая с этими двумя плагинами:
С select2 вы можете искать в любом месте в опции. Например, если у вас есть опция с именем ABCDEFG и вы вводите CDE, вы получите эту опцию в результатах поиска, но, выбрав ее, вы должны набрать AB ... и так далее, чтобы получить результаты.
Я обнаружил, что с большими наборами данных selected кажется быстрее, чем select2, особенно в IE.
источник
Kingdom
на странице их примера вернет вас,United Kingdom
что представляется очень логичным способом сделать это, плюс вы также можете указать$("#element").chosen({ search_contains: true });
.Select2 поддерживает мобильные устройства, тогда как Chosen специально отключает себя на iPod, iPhone и мобильных устройствах Android. Если вы хотите использовать «расширенные» поля выбора на мобильном устройстве, это облегчит ваш выбор.
источник
Мой опыт работы с Select2 был великолепен на настольных компьютерах, но на мобильных устройствах с сенсорным экраном они сильно различались, при этом всегда присутствовали некоторые причуды. Например, на xperia st15i с ics и штатным браузером выпадающий список всегда закрывался из-за кражи клавиатуры. Единственный способ открыть его снова - это коснуться меню десятки раз, удерживать палец на секунду и прочую магию вуду. Или начать печатать, когда выпадающий список закрыт, и сколько пользователей это поймут?
Selectize.js кажется намного более плавным, чем Select2, но он также имеет проблемы самостоятельно на мобильном телефоне, например, когда значение выбрано или введено, оно по какой-то причине перемещает страницу полностью влево. Кроме того, на старых устройствах Android 2.x, которые не поддерживают переполнение, невозможно выбрать несколько верхних опций, поскольку клавиатура не появляется. :(
Тем не менее, придется тестировать Chosen, и, возможно, неплохо было бы отключить мобильные устройства, но в конце концов старый добрый выпадающий список работает всегда и везде.
Обновление: теперь я также проверил Chosen, и он лучше в одной области: по умолчанию он не работает на мобильных устройствах (отлично!), Но имеет проблемы с фильтрацией слов. Например, не ищет в середине слова, и если вы используете & NBSP хак для aligments, она также будет игнорировать полный набор опций. Вернуться к чертежной доске.
источник
search_contains: true
в свои настройки. См .unchhq.github.io/chosen/options.htmlПочему я выбрал select2 вместо Chosen
Ключевая особенность select2, которую ни у какого другого элемента управления не существует автоматически, это «Очистить все» выборки с символом «x» в правой части элемента управления. Это убийственная функция для моего приложения. Я не знаю, почему в других библиотеках выбора тегов отсутствует эта функция.
источник
Select2 поддерживает AJAX Chosen Не поддерживает
Выбор 2 немного тяжелее по сравнению с выбранным.
Я переключился на Select2, потому что нет официальной поддержки операций ajax.
источник