Seçilmiş ve Seçilmiş2 arasındaki farklar nelerdir?


157

Seçili ve Seç2 , seçim kutularını genişletmek için kullanılan iki popüler kitaplıktır.

Her ikisi de aktif olarak korunuyor gibi görünüyor, Seçilen eski ve hem jQuery hem de Prototip destekler.

Select2 yalnızca jQuery'dir, belgelerinde Select2'nin Seçilmiş'ten esinlenildiğini, ancak yapılan herhangi bir iyileştirmeyi (varsa) veya yeniden yazmanın diğer nedenlerini ayrıntılandırmaz.

İki kütüphane hemen hemen aynı özellik kümesine sahiptir, bulduğum tek karşılaştırma biraz sonuçsuz bir jsperf test sayfasıdır.

Bu kütüphanelerden herhangi birinin diğerine göre avantajı var mı?


11
Çekme istekleriyle ilgili deneyiminiz, Select2'nin neden çatal değil, yeniden yazma olarak başladığı konusunda iyi bir ipucu. Ayrıca Select2'nin daha iyi (veya en azından daha uzun) belgelere sahip olduğunu fark ettim.
Paul

1
Önemli olduğunda veya fark uğruna Select2 Mache iken Select2 Apache lisanslıdır.
EGL 2-101

2
Kesin olmak gerekirse, Select2, Apache lisansı veya GPL v2 altında bulunur. is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU General Public License version 2
Paul

Yanıtlar:


92

Select2 3.3.1 itibariyle, README.md dosyasında belgelenenler aşağıdadır

Seçili Select2 Desteği Ne Yapmaz?

  • Büyük veri kümeleriyle çalışma: Seçili, tüm veri kümesinin DOM'da optionetiket olarak yüklenmesini gerektirir ve bu da küçük ish veri kümeleriyle çalışmasını sınırlar. Select2, sonuçları anında bulmak için sonuçları kısmen yüklemesine izin veren bir işlev kullanır.
  • Sonuçların sayfalandırılması: Select2 büyük veri kümeleriyle çalıştığı ve sayfalamayı desteklemesi gereken bir anda yalnızca az miktarda eşleşen sonuç yüklediği için. Select2, kullanıcı şu anda yüklü sonuç kümesinin en altına kaydırdığında arama işlevini çağıracak ve sonuçların 'sonsuz kaydırılmasına' izin verecektir.
  • Sonuçlar için özel işaretleme: optionEtiketler için desteklenen tek biçimlendirme olduğu için, yalnızca metin sonuçlarının oluşturulmasını destekler . Select2, sonuçları temsil etmek için her türlü işaretleme üretmek için kullanılabilecek bir uzatma noktası sağlar.
  • Anında sonuç ekleyebilme: Select2, kullanıcının girdiği arama teriminden etiket ekleme için kullanılmasına izin veren sonuçlar ekleme olanağı sağlar.

2
FWIW birisi Seçilmiş için özelliktir "sinek eklenti sonuç" çalışma yaptı: github.com/shezarkhani/chosen/tree/create_new_options Ben eklenti ExpressionEngine bunun uyarlanması çeşit kullanıyorum MX Seç Plus'ın (o nasıl Buraya geldim, çünkü şimdi Select2'yi kullanarak rakip bir eklenti var.
notacouch

Seçenekler AJAX ile doldurulduğundan, Select2'nin Javascript devre dışı bırakıldığında bir yedeği olmadığına dikkat edilmelidir.
deathlock

10
AJAX aracılığıyla veri çeken hiçbir şey Javascript olmadan çalışmayacaktır. Select2 önceden doldurulmuş değerlerle iyi çalışır ve AJAX kullanmak zorunda değildir.
zachzurn

@notacouch "Matris Desteği" ve "Düşük Değişken Desteği" ve "SafeCracker desteği" nedir? Bu kavramlar ExpressionEngine'e özgü mü?
John Zabroski

@JohnZabroski Evet, ticari EE 2.x eklentileridir (iirc SafeCracker yerleşik olabilir).
notacouch

40

IMHO Seçilmiş "korunur" ancak "aktif olarak korunmaz". Seçilmiş 341 sayı ve 51 çekme talebi. Select2'de 128 sayı ve 25 çekme isteği var. Bence bunlar için temel desen

  • hangisinin yüzeysel olarak size daha çekici geldiğini seç
  • bir veya iki uygulamada kullanın
  • özelleştirme sorunlarına veya sınırlamalarına çarpmak
  • belki sorunlar ve çekme istekleri ile toplulukla çalışmaya çalışın
  • sonunda bıkmış ve sadece bu süreçte öğrendiklerinizi kullanarak kendi kendinize

Hangisini seçerseniz seçin, kullanım durumunuz tam olarak onların tatlı yerinde ise, her ikisi de işe yarayacaktır. Değilse, sonunda kendi yazmanız veya büyük ölçüde özelleştirmeniz gerekecektir. Her iki durumda da, hangisinin seçimi özellikle o kadar önemli değildir. Sanırım @Andy Ray ve @paul ile birlikte olacağım, Select2 muhtemelen daha iyi ilk seçimdir.


4
Bana göre daha fazla konu, daha fazla insanın bakım ve kullanımı anlamına geliyor. Ve daha büyük topluluk daha iyi kod üretme eğilimindedir (bu seçilenler için geçerli değildir). Açısal JS: 397 sayı, 49 çekme gereksinimi; joyent / node: 476 sayı, 98 çekme talebi. Firefox, linux çekirdeği veya gcc için sayıların ne olacağını merak ediyorum.
Paul

Evet, sadece sezgisel. Teorik olarak, bir otomatik seçim widget'ı, neşeli / düğüm gibi bir şeyden çok daha düşük karmaşıklık dereceleri olmalıdır. Bu şeyler son derece özel olduğu ortaya çıktı, bu yüzden insanların göz ardı edilen çekme isteklerini dosyaladıkları ve daha sonra ayrı bir çatal veya yeniden yazma sürdürdükleri hissini alıyorum. YMMV.
Peter Lyons

Planlarınız bir özelleştirme yaklaşımı ile gidecekse sadece bir not: Seçilenin çok daha küçük bir kodu vardır (yaklaşık 1/3), ancak CoffeeScript ve SASS'ta (JS / CSS'ye derlenmeden önce) yazılır. CoffeeScript'e zaten aşina iseniz, seçiminiz basittir: Seçilmiş olanı anlamak ve özelleştirmek daha kolay olacaktır.
Tim Dorr

@Peter Lyons Bunlar, sonucunuzu çizmek için kullanılan oldukça tuhaf bazı metriklerdir (sonucunuza katılmıyorum). Katkıda bulunanların sayısına bir göz atın (Select2 = 239 v. Seçilmiş = 73) ancak bu da yanıltıcı olabilir, daha fazlası her zaman daha iyi değildir. Her bir GitHub projesinin Nabız ve Grafikleri, hangi projenin "aktif" veya "aktif geliştirme sürecinden" geçebileceğine dair bilinçli bir karar vermek için bir sürü faydalı istatistik ile birlikte taahhüt geçmişi ve sıklığı gösterir.
cfx

FWIW, Chosen son birkaç yılda çok fazla güncelleme yaptı.
Charles Wood

21

Bir başka fark söz değer yani Chosengelişmiştir Sassve CoffeeScriptbuna Select2sadedir CSSve JS. Hata ayıklamayı zorlaştıran gereksiz karmaşıklık katmanları olan Sassve benim kişisel seçeneğim CoffeeScript.

Her ikisini de denedikten sonra ikisini de kullanmaya karar verdim - Select2öğe işlevselliği oluşturmaya çalışmak , <select>elemanlara bağlandığında yapamayacağınız için çok kıllı bir mesele olduğu ortaya çıktı - sadece sahip olduğum çemberleri iyi düşünmedim içinden atlamak.

Formun DOM'sine yeni bir <option>...</option>öğe ekleyen selectize.js kullanmaya karar verdim - bu da aklı başında. Ayrıca kullanır LESS- ama bunu atlar ve derlenenleri CSSdoğrudan projenize uyarlarım.


2
selectize.jsdaha az kullanır . Bu, teknolojik çıkmazdan daha az mı Sass?
Chris Wesseling

Hayır, aynı alanda ama üç selectize.js'den projeye uyacak en az ince ayar gerekiyordu.
Daniel Sokolowski

selectize'in Firefox 28 ile ilgili görsel sorunları var.
MEM

@ MEM daha spesifik olabilir.
Daniel Sokolowski

Firefox 28'de (Mac OS X), her bir giriş alanının altında fazladan bir gri "kenar boşluğu veya dolgu veya kenarlık" göreceksiniz. Sanırım bu bir etki değil. Görsel bir tutarsızlık olmalı. Onlara FF'de baktığımızda açıktır ve örneğin aynı aksaklık Chrome'da gerçekleşmez.
MEM

18

seçilen.js ve select2.js

  • Her ikisi için MIT lisansı
  • Bağımlılıklar:
    • Select2: jQuery
    • Seçili: tbc
  • Masaüstü tarayıcı desteği:
    • Select2: IE8 +
    • Seçili: IE8 +
  • Cihaz desteği:
    • Select2: belirsiz
    • Seçili: iPhone, iPod Touch ve Android mobil cihazlarda devre dışı bırakıldı
  • Ağırlık (minimize edilmiş):
    • Seç2: 57KB
    • Seçilmiş: 27KB
  • Kullanım: Select2 daha fazla "süslü" kullanıcı arayüzünü destekler (bkz. "Şablonlar")
  • Her iki kod deposu Github'da mevcuttur
    • Select2: katkılar: çok aktif
    • Seçilmişler: katkılar: Select2'den yaklaşık 3 kat daha az

select2.js katkıları selected.js katkıları

ps. Eksik noktalar hakkında daha fazla bilgi bulduğumda bu cevabı güncellemeye çalışacağım


Select2 , mobil cihazları diğerleriyle aynı şekilde desteklemelidir. Tüm cihazlarda, amaçlanan tüm işlevlerle de aynı şekilde çalıştığından emin olmaya çalışıyoruz.
Kevin Brown

1
Sanırım select2'nin daha aktif olmasının ana sebebi, büyük bir yeniden yazma olan select2 4.x üzerinde çalışıyor olmaları. Dürüst olmak gerekirse, insanların neden katkılara bu kadar çok önem verdiğini anlamıyorum. GitHub'ın kod kapsamı ve test senaryoları gibi önemli şeyleri izleyen kümülatif bir akış diyagramına sahip olmasının yanı sıra sorunlara ortalama yanıt süresi diliyorum! (Select2, btw kullanıyorum, amacım sadece katkılara odaklanan insanlar ve yukarıdaki grafikler tarafından teşvik edilen sosyal mühendislik hakkında genel bir evcil hayvan
huşu

13

İlk olarak, Chosen ve Select2'nin iki harika eklenti olduğunu söyleyeyim ve bu benim Chosen hakkındaki kişisel deneyimim. Bütün söyledikleri Chosen için doğrudur.

Sorun ile Pēteris Caune tarafından işaret select2 yaşında ve hala hiçbir resmi bir düzeltme var. API için iyi bir belge yoktur. Birçok kez işaret edildi (saat 671'i izleyin) ama hala hiçbir şey yok. Div'ı göstermeden önce sakladıysanız, seçilen sorunu temel olarak işe yaramayacakları bu sorunu çözmek neredeyse 2 yıl sürdü overflow:hidden(ve birwitdh:X% sorunu aramazsanız temelde asla bilemeyeceğiniz seçenek ).

Asıl sorunun, 92 numaralı sorundaki DelvarWorld gibi düzeltme hızı olduğunu söyleyebilirim:

Çekme isteğim bu sorunu giderir, ancak diğer bir ve benim seçtiklerim gibi çoğu yok sayılıyor. Bu projede çok az sayıda kod tabanı bulunan çok fazla katılımcı var.

İlk MIT lisansı için seçtim ama tüm tez sorunları (açılan kesim, API bulmak değil, taşma için gizli saatler arıyor) vardı, bu yüzden daha iyi bir belge, hiçbir açılan kesim hata var çünkü select2 geçmek karar verdi ve daha hızlı düzeltmeler.


Not: Select2, MIT altında da lisanslanmıştır. github.com/select2/select2/blob/master/LICENSE.md
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ

Bu cevap gerçekten eskidir ve artık geçerli olmayabilir. Zaman bulduğumda düzenleyeceğim.
zipp


6

Bu iki eklenti ile çalışırken bulduğum bazı farklılıklar:

  • Select2 ile seçenekteki herhangi bir yerde arama yapabilirsiniz. Örneğin, ABCDEFG adlı bir seçeneğiniz varsa ve CDE'ye yazarsanız, arama sonuçlarında bu seçeneği elde edersiniz, ancak seçili olarak sonuçları almak için AB .. vb.

  • Ben daha büyük veri kümeleri ile seçilen IE, özellikle IE daha hızlı gibi göründüm.


2
Evet Seçilmiş kelimeleri aramak gibi görünüyor, bu Kingdomonların örnek sayfasında yazarak dönecek United Kingdomki bunu yapmanın çok mantıklı bir yolu gibi görünüyor artı da belirtebilirsiniz $("#element").chosen({ search_contains: true });.
Daniel Sokolowski

2
Sana katılıyorum ve çoğu zaman böyle. kelimeler arıyordunuz. Ancak, 'abc' yazarsanız, parantez içinde 'xyz (abc)' gibi şeylere sahip olduğunuz birçok durumda, ayrıca döndürülmeyecek 'xyz' de arıyorsunuz. Sanırım, kullandığınız senaryoya bağlı. Web uygulamamda bunların ikisini de alakalı oldukları yerde kullandım. Sadece IE'de üstün işleme hızı nedeniyle biraz daha seçmeyi seviyorum.
reggaemahn

5

Select2 cep telefonunu desteklerken, Chosen özellikle iPod, iPhone ve mobil Android cihazlarında kendisini devre dışı bırakır . Mobil cihazlarda "genişletilmiş" seçim kutularını kullanmak istiyorsanız, bu seçiminizi kolaylaştırır.


@RezaRahmati bunun için teşekkürler. Bir iPhone'da da şans eseri denediniz mi? harvesthq.github.io/chosen/#faqs "iPhone, iPod Touch ve Android mobil cihazlarda seçilen devre dışı" diyor. github.com/harvesthq/chosen/pull/1388 hakkında
Adrien

@adrienbe evet Samsung galaxy sekmesinde ve iPad'de test ettim
Reza

@RezaRahmati sonuç ne oldu?
Adrien Be

@AdrienBe Çalışıyor, medicfa.com/Users/Create?reloadList=false içinde kullandım tablet ile açın ve sonucu kontrol edin
Reza

5

Select2 ile yaşadığım deneyim masaüstünde harikaydı, ancak dokunmatik mobil cihazlarda çok çeşitli, bazı tuhaflıklar her zaman mevcuttu. Örneğin, ics ve stok tarayıcı açılır listesiyle xperia st15i'de klavye çalma odağı nedeniyle her zaman kendini kapatıyordu. Tekrar açmanın tek yolu menüye onlarca kez dokunmak, parmağınızı bir saniye ve diğer vudu büyüsü için tutmaktır. Veya açılır liste kapalıyken yazmaya başlayın ve kaç kullanıcı bunu anlayacak?

Selectize.js, Select2'den çok daha yumuşak gibi görünüyor, ancak aynı zamanda mobilde kendi başına sorunları var, örneğin değer seçildiğinde veya girildiğinde, bir nedenden dolayı sayfayı tamamen sola taşır. Ayrıca, taşmayı desteklemeyen eski Android 2.x cihazlarda, klavye açılmadığı için en iyi birkaç seçeneği seçmek imkansızdır. :(

Yine de Seçilmiş'i test etmek zorunda ve sonuçta mobil cihazlar için devre dışı bırakılması o kadar da kötü bir fikir olmayabilir, ama sonunda eski eski açılanlar her zaman ve her yerde çalışır.

Güncelleme: şimdi de Seçilmiş'i de test ettim ve bir alanda daha iyi: varsayılan olarak mobilde çalışmıyor (harika!), Ancak kelime sorunlarını filtreliyor. Örneğin, kelimelerin ortasında arama yapmaz ve hizalama için & nbsp hack kullanırsanız , tam seçenekleri de göz ardı eder. Çizim tahtasına geri dön.


Seçili öğelerde aramayı doğru şekilde etkinleştirmek search_contains: trueiçin seçeneklerinize ekleyin . Bkz. Harvesthq.github.io/chosen/options.html
Sicco

1

Neden Seçilmişler arasından select2'yi seçtim

Select2'nin temel özelliği, başka hiçbir kontrolün otomatik olarak sihirli olmaması, kontrolün sağındaki 'x' ile "Tümünü temizle" seçimleridir. Bu benim uygulama için katil bir özellik. Diğer seçme etiket geliştirme kitaplıklarının neden bu özellik eksik olduğunu bilmiyorum.


0

Select2, AJAX Chosen'i desteklemiyor

Seç 2, seçilene kıyasla boyut olarak biraz daha ağırdır.

Ajax işlemleri için resmi destek olmadığından Select2'ye geçtim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.