Chosen和Select2是用于扩展选择框的两个更受欢迎的库。
两者似乎都得到了积极维护,Chosen更老,同时支持jQuery和Prototype。
Select2仅限jQuery,其文档称Select2的灵感来自Chosen,但没有详细说明所做的任何改进(如果有的话)或其他重写原因。
两个库具有相同的功能集,我发现的唯一比较是一个有点不确定的jsperf测试页。
这些库中是否有任何优势?
答案 0 :(得分:88)
从Select2 3.3.1开始,以下是其README.md
中记录的内容选择的Select2支持不是什么?
- 使用大型数据集:选择需要将整个数据集作为
option
标记加载到DOM中,这限制了它与 小型数据集。 Select2使用函数来查找结果 即时,允许它部分加载结果。- 分页结果:由于Select2适用于大型数据集,因此只需加载少量匹配结果 分页。当用户滚动到时,Select2将调用搜索功能 当前加载的结果集的底部允许'无限 滚动结果。
- 结果的自定义标记:选择仅支持呈现文本结果,因为这是
option
标记支持的唯一标记。 Select2提供了一个扩展点,可用于生成任何扩展点 用于表示结果的标记。- 能够动态添加结果:Select2提供了添加用户输入的搜索词的结果的功能, 用于标记。
答案 1 :(得分:39)
恕我直言选择是“维持”但不是“积极维护”。选择了341个问题和51个拉取请求。 Select2有128个问题和25个拉取请求。我认为这些模式基本上是
无论你选择哪一个,如果你的用例完全在他们的最佳位置,任何一个都可以。如果没有,你最终必须自己编写或大量定制这些。在任何一种情况下,选择哪一个并不是那么重要。我想我会支持@Andy Ray和@paul,因为Select2可能是更好的初始选择。
答案 2 :(得分:21)
值得一提的另一个不同之处是Chosen
是Sass
和CoffeeScript
开发的,而Select2
是CSS
和JS
。我个人认为Sass
和CoffeeScript
是不必要的复杂层,使调试变得困难。
尝试两者后我决定不使用 - 试图获得Select2
创建项目功能结果是一个非常毛茸茸的事情,因为当你附加到<select>
元素时根本无法做到这一点 - 它我还没有想到我必须跳过的箍。
我已经决定使用selectize.js,它只是将新的<option>...</option>
元素添加到表单的DOM中 - 这是理智的。它也使用LESS
- 但我会绕过它,只是直接在你的项目中定制编译的CSS
。
答案 3 :(得分:17)
PS。当我发现有关缺失点的更多信息时,我会尝试更新这个答案
答案 4 :(得分:13)
首先,让我告诉你,Chosen和Select2是两个很棒的插件,这是我对Chosen的个人经历。所有他们所说的都是关于选择的。
PēterisHaune指出的issue select
是2岁,仍然没有正式修复。
API没有好的文档。有人指出(观察问题671)很多时候,但仍然没有。
他们花了差不多两年的时间来解决这个问题issue如果你在显示它之前用overflow:hidden
隐藏了div,那么选择它基本上是行不通的(你必须使用witdh:X%
选项基本上永远不知道你是否不寻找这个问题。)
我要说的主要问题是修复速度,如第92期中的DelvarWorld所说:
我的拉取请求解决了这个问题,但就像我的另一个和许多一样 被选中的人被忽略了。这个项目太多了 代码库太少的贡献者。
我首先选择了Chosen的MIT许可证,但是我有所有这些问题(下拉列表,没有找到API,寻找隐藏溢出的时间),所以我决定切换到select2,因为它有更好的文档,没有下拉删除错误和更快的修复。
答案 5 :(得分:9)
在Select2中有效但在选择中不起作用的一个功能是select
在具有overflow: hidden
或overflow: auto
的元素内。
答案 6 :(得分:6)
我发现使用这两个插件的一些差异:
使用select2,您可以在选项中的任何位置进行搜索。对于例如如果您有一个名为ABCDEFG的选项并且您输入CDE,您将在搜索结果中获得该选项,但选择后您必须输入AB ..等等以获得结果。
我发现,对于较大的数据集,选择似乎比select2更快,尤其是在IE中。
答案 7 :(得分:5)
Select2支持移动设备,而在iPod,iPhone和移动Android上选择specifically disables itself。如果你想使用&#34;扩展&#34;选择手机上的方框,这样可以轻松做出选择。
答案 8 :(得分:5)
我在使用Select2时的体验在桌面上非常棒,但触控移动设备的变化很大,总有一些怪癖。例如,在带有ics和stock浏览器的xperia st15i上,由于键盘窃取焦点,下拉列表总是关闭。只有这样才能让它再次打开就是触摸菜单几十次,握住手指一秒钟和其他伏都教魔法。或者在下拉列表关闭时开始输入,以及有多少用户会想出这个?
Selectize.js似乎比Select2更顺畅,但它在移动设备上也存在问题,例如:当选择或输入值时,由于某种原因,它会将页面一直向左移动。此外,在不支持溢出的旧版Android 2.x设备上,由于键盘没有弹出,因此无法选择几个顶级选项。 :(
仍然需要测试Chosen,毕竟移动设备被禁用可能不是一个坏主意,但最终好的旧下拉列表始终无处不在。
更新:现在我也测试了Chosen,它在一个领域更好:默认情况下它在手机上不起作用(太棒了!),但它有过滤词问题。例如,不会在单词的中间进行搜索,如果您使用&amp; nbsp hack进行对齐,它也会忽略完整的选项。回到绘图板。
答案 9 :(得分:1)
为什么我选择select2而不是选择
关键功能select2具有,其他控件没有自动魔法,是&#34;全部清除&#34;使用&#39; x&#39;进行选择在控制的右边。这是我的应用程序的杀手级功能。我不知道为什么其他选择标签增强库缺少此功能。
答案 10 :(得分:0)
Select2支持AJAX 选择没有
与选择相比,选择2的尺寸稍微重一些。
我切换到Select2,因为没有官方支持ajax操作。