В чем разница между Chosen и Select2?

Chosen и Select2 являются двумя более популярными библиотеками для расширения selectboxes.

Оба, кажется, активно поддерживаются, Chosen старше и поддерживает как jQuery, так и Prototype.

Select2 только jQuery, его документация говорит, что Select2 вдохновлен Chosen, но не детализирует никаких сделанных улучшений (если есть) или других причин для перезаписи.

Две библиотеки имеют почти такой же набор функций, единственное сравнение, которое я нашел, - это несколько неубедительная тестовая страница jsperf.

Имеет ли какая-либо из этих библиотек какие-либо преимущества перед другими?

Ответ 1

Как и в случае Select2 3.3.1, ниже приведено то, что описано в его README.md

Что выбирает Select2, которую не выбрали?

  • Работа с большими наборами данных: Chosen требует, чтобы весь набор данных загружался как теги option в DOM, что ограничивает его работу с малые хэш-массивы. Select2 использует функцию для поиска результатов на лету, что позволяет частично загружать результаты.
  • Пейджинг результатов: так как Select2 работает с большими наборами данных и загружает только небольшое количество совпадающих результатов за раз, когда он должен поддерживать пейджинг. Select2 вызовет функцию поиска, когда пользователь прокручивается до нижней части текущего загруженного набора результатов, позволяющего "бесконечно прокрутка" результатов.
  • Пользовательская разметка для результатов: выбранный поддерживает только результаты рендеринга текста, потому что это единственная разметка, поддерживаемая тегами option. Select2 предоставляет точку расширения, которая может использоваться для создания любого вид разметки для представления результатов.
  • Возможность добавлять результаты "на лету": Select2 предоставляет возможность добавлять результаты из поискового запроса, введенного пользователем, что позволяет для использования для маркировки.

Ответ 2

ИМХО Избранный "поддерживается", но не "активно поддерживается". 341 вопрос и 51 запрос на выбор для избранных. Select2 имеет 128 выпусков и 25 запросов тянуть. Я думаю, что шаблон для них в основном

  • выберите тот, который более поверхностно более привлекателен для вас.
  • используйте его в приложении или два
  • Устранение проблем или ограничений настройки
  • возможно, попытайтесь работать с сообществом через проблемы и тянуть запросы
  • в конце концов надоели и просто создали свой собственный, используя то, что вы узнали в этом процессе.

Какой бы вы ни выбрали, если ваш случай использования находится именно в их сладком месте, любой из них будет работать. Если нет, вам в конечном итоге придется написать свой собственный или сильно настроить их. В любом случае выбор одного из них не так важен. Думаю, я буду с @Andy Ray и @paul здесь, что Select2, вероятно, лучший исходный выбор.

Ответ 3

Еще одно отличие состоит в том, что Chosen разрабатывается в Sass и CoffeeScript, тогда как Select2 является простым CSS и JS. Мой личный вариант: Sass и CoffeeScript - это ненужные слои сложности, которые затрудняют отладку.

После того, как я попытался использовать оба варианта, я попытался получить Select2, чтобы создать функциональность элемента, оказывается очень волосатым делом, поскольку вы просто не можете сделать это при прикреплении к элементам <select> - это просто не хорошо подумайте об обручах, с которыми мне пришлось бы прыгать.

Я решил использовать selectize.js, который просто добавляет новый элемент <option>...</option> в форму DOM - и это разумно. Он также использует LESS - но я бы обошел это и просто адаптировал скомпилированный CSS непосредственно в вашем проекте.

Ответ 4

selected.js vs select2.js

  • Лицензия MIT для
  • Зависимости:
    • Select2: jQuery
    • Выбран: tbc
  • Поддержка настольных браузеров:
    • Select2: IE8 +
    • Выбрано: IE8 +
  • Поддержка устройств:
    • Select2: нечетко
    • Выбрано: отключено на iPhone, iPod Touch и мобильных устройствах Android.
  • Вес (уменьшенный):
    • Select2: 57KB
    • Выбрано: 27 КБ
  • Использование: Select2 поддерживает более "причудливый" пользовательский интерфейс (см. "шаблоны" )
  • Оба репозитория кода доступны на Github
    • Select2: взносы: очень активные
    • Выбрано: взносы: примерно в 3 раза меньше Select2

select2.js contributionschosen.js contributions

пс. Я попытаюсь обновить этот ответ, когда узнаю больше о недостающих точках

Ответ 5

Во-первых, позвольте мне сказать вам, что Chosen and Select2 - два больших плагина, и это мой личный опыт о Избранном. Все, что они говорят, верно в отношении Избранных.

issue, на который указывает Петерис Каун с select, составляет 2 года, и до сих пор нет официального исправления. Для API просто нет хорошей документации. Было указано (часовой вопрос 671) много раз, но до сих пор ничего нет. Им потребовалось почти 2 года, чтобы решить этот issue, где выбранный в основном не работает, если вы спрятали div с overflow:hidden, прежде чем показывать его (и вам нужно использовать a witdh:X%, который вы в принципе никогда не узнаете, если вы не ищете проблему).

Я бы сказал, что основной проблемой является скорость исправления, например, DelvarWorld в выпуске 92:

Мой запрос на удаление исправляет эту проблему, но, как и мой другой, и многие из те, которые выбраны, игнорируются. В этом проекте слишком много вкладчики с слишком малой базой кода.

Сначала я выбрал Chosen для своей лицензии MIT, но у меня были все тезисы (выпадающий список, не найти API, ища часы для переполнения скрытых), поэтому я решил переключиться на select2, потому что у него есть лучшая документация, нет dropdown cut bug и более быстрые исправления.

Ответ 6

Одна функция, которая работает в Select2, но не работает в Chosen, является select внутри элемента с overflow: hidden или overflow: auto.

enter image description here

Соответствующая проблема для избранных: https://github.com/harvesthq/chosen/issues/86

Ответ 7

Некоторые различия, которые я нашел, работают с этими двумя плагинами:

  • С помощью select2 вы можете искать в любом месте в опции. Напр. если у вас есть опция ABCDEFG, и вы вводите CDE, вы получите эту опцию в результатах поиска, но с выбранными вами вы должны ввести AB.. и т.д., чтобы получить результаты.

  • Я обнаружил, что с более крупными наборами данных выбранный, кажется, быстрее, чем select2, особенно в IE.

Ответ 8

Select2 поддерживает мобильный, тогда как Chosen специально отключает себя на iPod, iPhone и мобильном телефоне Android. Если вы хотите использовать "расширенные" флажки на мобильном телефоне, это упростит ваш выбор.

Ответ 9

Мой опыт работы с Select2 был отличным на рабочем столе, но на сенсорных мобильных устройствах было очень много, и некоторые причуды всегда присутствовали. Например, на xperia st15i с раскрывающимся броузером ics и броузером всегда закрывался сам из-за кражи клавиатуры. Только способ открыть его снова - это прикоснуться к меню десятки раз, удерживать палец за вторую и другую магию вуду. Или начать печатать, когда раскрывающийся список закрыт, и сколько пользователей это выяснит?

Selectize.js кажется гораздо более гладким, чем Select2, но он также имеет проблемы самостоятельно на мобильных устройствах, например. когда значение выбрано или введено, он по какой-то причине перемещает страницу до упора влево. Кроме того, на старых устройствах Android 2.x, которые не поддерживают переполнение, невозможно выбрать последние несколько вариантов, так как клавиатура не всплывает.: (

По-прежнему нужно протестировать Chosen, и в конце концов, это может быть не такая уж плохая идея для мобильных устройств, но, в конце концов, хороший старый выпадающий список работает всегда и везде.

Обновление: теперь я также тестировал Chosen, и это лучше в одной области: он по умолчанию работает на мобильном телефоне (отлично!), но у него есть проблемы с фильтрами. Например, не выполняет поиск в середине слов, и если вы используете и nbsp взломать для алиментов, он также игнорирует полные параметры. Вернуться к чертежной доске.

Ответ 10

Select2 поддерживает AJAX Выбранный не

Выбор 2 немного тяжелее по сравнению с выбранным.

Я переключился на Select2, потому что не было официальной поддержки операций ajax.

Ответ 11

Почему я выбрал select2 over Chosen

Ключевой особенностью select2 является то, что никакое другое управление не имеет автоматическое магнетизм, это "Очистить все" с помощью "x" в правой части элемента управления. Это функция убийцы для моего приложения. Я не знаю, почему в других библиотеках расширений для тегов нет этой функции.