Які відмінності між вибраними та Select2?


157

Chosen та Select2 - це ще дві популярні бібліотеки для розширення скриньок вибору .

Обидва, схоже, активно підтримуються, Chosen є старшим і підтримує як jQuery, так і прототип.

Select2 - це лише jQuery, в її документації йдеться про те, що Select2 натхненний Chosen, але не деталізує жодних вдосконалень (якщо такі є) чи інших причин перезапису.

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

Чи має будь-яка з цих бібліотек переваги перед іншими?


11
Ваш досвід із запитами на тягнення, ймовірно, є гарним підказом щодо того, чому Select2 почався як перезапис, а не форк. Я також помітив, що у Select2 є краща (або принаймні довша) документація.
Пол

1
Якщо це має значення або заради різниці, вибрано MIT, а Select2 має ліцензію Apache.
EGL 2-101,

2
Якщо бути точним, Select2 доступний за ліцензією Apache або GPL v2. is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU General Public License version 2
Пол

Відповіді:


92

Станом на Select2 3.3.1, нижче наведено те, що зафіксовано у його README.md

Що означає підтримка Select2, яку обраний не робить?

  • Робота з великими наборами даних: Chosen вимагає, щоб весь набір даних завантажувався як optionтеги в DOM, що обмежує його роботу з невеликими наборами даних. Select2 використовує функцію для швидкого пошуку результатів, яка дозволяє частково завантажувати результати.
  • Підказка результатів: Оскільки Select2 працює з великими наборами даних і завантажує лише невелику кількість відповідних результатів за один раз, він повинен підтримувати підкачки. Select2 буде викликати функцію пошуку, коли користувач прокручує до нижньої частини завантаженого в даний час набору результатів, що забезпечує «нескінченну прокрутку» результатів.
  • Спеціальна розмітка для результатів: вибраний підтримує лише результати відображення тексту, оскільки це єдина розмітка, що підтримується optionтегами. Select2 надає точку розширення, яку можна використовувати для створення будь-якого типу розмітки для представлення результатів.
  • Можливість додавання результатів на льоту: Select2 забезпечує можливість додавання результатів із пошукового терміну, введеного користувачем, що дозволяє використовувати його для тегування.

2
fwiw хтось працював над функцією "додавання результатів на льоту" для Chosen: github.com/shezarkhani/chosen/tree/create_new_options Я використовую якусь адаптацію її у додатку ExpressionEngine MX Select Plus (саме так Я потрапив сюди, оскільки зараз існує конкуруюча надбудова за допомогою Select2).
notacouch

Слід зазначити, що в Select2 немає резервного запасу, коли Javascript відключений, оскільки параметри заповнюються через AJAX.
смертельна ситуація

10
Ніщо, що перетягує дані через AJAX, не працюватиме без Javascript. Select2 добре працює з попередньо заповненими значеннями і не потрібно використовувати AJAX.
zachzurn

@notacouch Що таке "Підтримка матриці" та "Підтримка низьких змінних" та "Підтримка SafeCracker"? Чи характерні ці поняття для ExpressionEngine?
Іван Заброський

@JohnZabroski Так, вони є комерційними додатками EE 2.x (можливо, вбудований iirc SafeCracker).
notacouch

40

Обраний ІМХО "підтримується", але не "активно підтримується". 341 випуск та 51 запит на виклик для вибраних. Select2 має 128 випусків та 25 запитів на виклик. Я думаю, що закономірність цього в основному є

  • виберіть те, що вам більше подобається
  • використовувати його в додатку чи двох
  • натрапляти на проблеми або обмеження налаштування
  • можливо, спробуйте співпрацювати із спільнотою за допомогою питань та викликів запитів
  • врешті-решт надоїдьте та просто побудуйте своє, використовуючи те, що ви дізналися в цьому процесі

Що б ви не вибрали, якщо ваш випадок використання знаходиться саме в їхньому солодкому місці, той чи інший буде працювати. Якщо ні, то, зрештою, вам доведеться написати свої власні або серйозно налаштувати їх. В будь-якому випадку вибір конкретно не все є таким важливим. Я думаю, що я буду на стороні @Andy Ray і @paul, що Select2 - це, мабуть, кращий вихідний вибір.


4
На мій погляд, більше питань означає, що більше людей доглядає та використовує. І більші громади прагнуть створювати кращий код (це не обов'язково стосується вибраних). AngularJS: 397 випусків, 49 тягнутих запитів; радість / вузол: 476 випусків, 98 витягнутих запитів. Цікаво, які цифри були б для firefox, Linux ядра чи gcc.
Павло

Так, це просто евристика. Теоретично віджет автовибору повинен бути на кілька порядків меншим за складністю, ніж щось на зразок радість / вузол. Ці речі виявляються дуже звичними, тому я розумію, що люди подають запити на витяг, які ігноруються, і потім вони йдуть підтримувати окрему вилку або переписувати. YMMV.
Пітер Ліонс

Лише зауважте, якщо ваші плани підходити з підходом до налаштування: Chosen має значно менший обсяг коду (приблизно 1/3), але він записується в CoffeeScript і SASS (перед тим, як компілювати в JS / CSS). Якщо ви вже знайомі з CoffeeScript, то ваш вибір простий: обраний буде легше зрозуміти та налаштувати.
Тім Дорр

@Peter Lyons Це кілька досить химерних показників, які використовуються для того, щоб зробити ваш висновок (не те, що я не згоден з вашим висновком). Подивіться на кількість дописувачів (Select2 = 239 v. Вибрано = 73), але це також може ввести в оману, більше не завжди краще. Імпульс та графіки кожного проекту GitHub відображають історію та частоту, а також низку інших корисних статистичних даних, щоб прийняти обгрунтоване рішення про те, який проект може «підтримуватися» порівняно з «активно розвиваються».
cfx

FWIW, Chosen за останні кілька років оновило багато оновлень.
Чарльз Вуд

21

Ще одна відмінність, яку варто згадати, полягає в тому, що Chosenвона розроблена в, Sassа CoffeeScriptтоді Select2як звичайна CSSі JS. Це мій особистий вибір , який Sassі CoffeeScriptє непотрібні шари складнощів , які роблять налагодження важко.

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

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


2
selectize.jsвикористовує менше . Це менш технологічний глухий кут, ніж Sassє?
Кріс Вессілінг

Ні, він знаходиться в одному домені, але з трьох selectize.js потрібно було не менше налаштування, щоб відповідати проекту.
Даніель Соколовський

selectize має візуальні проблеми на Firefox 28.
MEM

@MEM, ви можете бути більш конкретними.
Даніель Соколовський

У Firefox 28 (Mac OS X) ви помітите додаткове сіре "поле або прокладку або межу" під кожним полем введення. Я не думаю, що це ефект. Це має бути візуальна непослідовність. Зрозуміло, що ми дивимось на них на FF, і той самий глюк не виникає, наприклад, у Chrome.
MEM

18

selected.js vs select2.js

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

вклади select2.js Вкладення вибраних.js

пс. Я спробую оновити цю відповідь, коли я дізнаюся більше про відсутні пункти


Select2 повинен підтримувати мобільні пристрої так само, як і інші. Ми намагаємося переконатися, що він працює так само добре, з усіма передбаченими функціоналами на всіх пристроях.
Кевін Браун

1
Я думаю, що головна причина select2 є більш активною в тому, що вони працюють над select2 4.x, що є основним перезаписом. Я, чесно кажучи, не розумію, чому люди так сильно акцентують увагу на внесках. Я б хотів, щоб у GitHub була накопичена схема потоку, яка відслідковувала важливі речі, такі як покриття коду та тестові випадки, а також середній час відповіді на проблеми! (Я використовую select2, btw, моя думка - це лише загальне погляди на домашніх тварин, що фокусуються на внесках та соціальній інженерії, що заохочується діаграмами вище.)
Джон Заброський,

13

По-перше, дозвольте мені сказати, що Chosen і Select2 - це два чудових плагіна, і це мій особистий досвід щодо Chosen. Все, що вони говорять, правда щодо Вибраного.

Питання вказав Петеріс Цауне з select2 -х років і до сих пір немає жодної офіційної виправлення. Просто немає хорошої документації для API. На це вказували (дивіться випуск 671) багато разів, але все ще нічого немає. Щоб вирішити цю проблему, їм знадобилося майже 2 роки, якщо вибрані в основному не спрацюють, якщо ви заховали діва overflow:hiddenперед тим, як показати його (і вам доведеться використовувати witdh:X%варіант, який ви, як правило, ніколи не знаєте, якщо не шукаєте проблеми).

Я б сказав, що головна проблема полягає у швидкості виправлення, як сказано в DelvarWorld у випуску 92:

Мій запит на виправлення вирішує цю проблему, але, як і інший мій, і багато хто з обраних, вони ігноруються. Цей проект має занадто багато учасників з надто малою кодовою базою.

Я вперше вибрав Chosen за його ліцензію на MIT, але у мене були всі тези (проблеми, що випадають, не знайшли API, шукали години, щоб переповнення було прихованим), тому я вирішив переключитися на select2, оскільки він має кращу документацію, жодної помилки, що випадає. і швидші виправлення.


Зауважимо, що Select2 також ліцензується під MIT. github.com/select2/select2/blob/master/LICENSE.md
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ

Ця відповідь справді стара і може більше не застосовуватися. Я відредагую її, коли знайду час.
zipp

9

Однією з функцій, яка працює в Select2, але не працює в Chosen, є selectвнутрішній елемент, який має overflow: hiddenабо overflow: auto.

введіть тут опис зображення

Відповідне питання для вибраних: https://github.com/harvesthq/chosen/isissue/86


Я стикаюсь з тим же питанням із Вибраним.
devXen

1
Ви можете це .chosen-drop { z-index: 999999 !important;}виправити вибраним
Аліреза Фаттахі

6

Деякі відмінності я знайшов, працюючи з цими двома плагінами:

  • За допомогою select2 можна здійснити пошук у будь-якому місці в опції. Наприклад, якщо у вас є опція під назвою ABCDEFG і ви вводите CDE, ви отримаєте цю опцію в результатах пошуку, але при вибраному вам потрібно ввести AB .. і так далі, щоб отримати результати.

  • Я виявив, що з більшими наборами даних обраний, здається, швидше, ніж select2, особливо в IE.


2
Так, Вибраний, здається, шукає слова, тобто введення Kingdomна їхній сторінці прикладу повернеться, United Kingdomщо здається дуже логічним способом зробити це, плюс ви можете також вказати $("#element").chosen({ search_contains: true });.
Даніель Соколовський

2
Я згоден з вами, і часто так буває, тобто. ви б шукали слова. Але у багатьох випадках, коли у дужках є такі речі, як "xyz (abc)", якщо ви вводите "abc", ви також шукаєте "xyz", який не буде повернутий. Я думаю, що це зводиться до сценарію, в якому ви його використовуєте. У своєму веб-додатку я використовував обидва ці випадки, де вони були релевантні. Мені подобається, що я вибрав трохи більше, тільки тому, що це чудова швидкість візуалізації в IE.
reggaemahn

5

Select2 підтримує мобільний, тоді як Chosen спеціально вимикає себе на iPod, iPhone та мобільних Android. Якщо ви хочете використовувати "розширені" вибірки на мобільному, це полегшує ваш вибір.


@RezaRahmati thx для цього. Ви пробували на iPhone теж випадково? umberhq.github.io/chosen/#faqs говорить: "Вибране вимкнено на мобільних пристроях iPhone, iPod Touch та Android". докладніше на github.com/harvesthq/chosen/pull/1388
Adrien Be

@adrienbe так, я перевірив це на вкладці галактики Samsung та iPad
Reza

@RezaRahmati який був результат?
Адрієн Будь

@AdrienBe Це працює, я використовував його в medicfa.com/Users/Create?reloadList=false відкрийте його планшетом і перевірте результат
Reza

5

Мій досвід роботи з Select2 був чудовим на робочому столі, але на мобільних пристроях на дотик сильно різняться, завжди є примхи. Наприклад, на xperia st15i з ics та біржовим браузером випадання завжди закривалося саме через фокус розкрадання клавіатури. Єдиний спосіб відкрити його знову - це торкнутися меню десятки разів, утримувати палець на секунду та іншу магію вуду. Або почати вводити текст, поки випадаючий список закритий, і скільки користувачів це зрозуміють?

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

Досі доведеться протестувати Chosen, і, можливо, не така вже й погана ідея вимкнутись для мобільних пристроїв, але, врешті-решт, хороша стара версія випадає працює завжди і скрізь.

Оновлення: тепер я також тестував Chosen, і це краще в одній області: він не працює на мобільному за замовчуванням (чудово!), Але у нього є фільтруючі слова. Наприклад, не здійснює пошук у середині слів, і якщо ви використовуєте & nbsp хак для вирівнювання, він також ігнорує повні параметри. Повернутися до дошки для малювання.


Щоб правильно включити пошук у вибраному, додайте search_contains: trueдо своїх параметрів. Див harvesthq.github.io/chosen/options.html
Sicco

1

Чому я вибрав select2 над Chosen

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


0

Select2 підтримує вибраний AJAX

Виберіть 2 трохи важчий за розмірами порівняно з обраним.

Я перейшов на Select2, оскільки немає офіційної підтримки операцій ajax.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.