选择和选择2有什么区别?

时间:2012-11-27 00:28:54

标签: javascript jquery-chosen jquery-select2

ChosenSelect2是用于扩展选择框的两个更受欢迎的库。

两者似乎都得到了积极维护,Chosen更老,同时支持jQuery和Prototype。

Select2仅限jQuery,其文档称Select2的灵感来自Chosen,但没有详细说明所做的任何改进(如果有的话)或其他重写原因。

两个库具有相同的功能集,我发现的唯一比较是一个有点不确定的jsperf测试页。

这些库中是否有任何优势?

11 个答案:

答案 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)

值得一提的另一个不同之处是ChosenSassCoffeeScript开发的,而Select2CSSJS。我个人认为SassCoffeeScript是不必要的复杂层,使调试变得困难。

尝试两者后我决定不使用 - 试图获得Select2创建项目功能结果是一个非常毛茸茸的事情,因为当你附加到<select>元素时根本无法做到这一点 - 它我还没有想到我必须跳过的箍。

我已经决定使用selectize.js,它只是将新的<option>...</option>元素添加到表单的DOM中 - 这是理智的。它也使用LESS - 但我会绕过它,只是直接在你的项目中定制编译的CSS

答案 3 :(得分:17)

selected.js vs select2.js

  • 两者的麻省理工学院许可
  • 依赖关系:
    • Select2:jQuery
    • 选择:tbc
  • 桌面浏览器支持:
    • 选择2:IE8 +
    • 选择:IE8 +
  • 设备支持:
    • 选择2:不清楚
    • 选择:在iPhone,iPod Touch和&amp ;;上禁用Android移动设备
  • 重量(缩小):
    • 选择2:57KB
    • 选择:27KB
  • 用法:Select2支持更多“花哨”UI(参见'模板')
  • 两个代码回购都可以在Github上找到
    • 选择2:贡献:非常活跃
    • 选择:贡献:比Select2
    • 少3倍

select2.js contributions chosen.js contributions

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: hiddenoverflow: auto的元素内。

enter image description here

选择的相应问题:https://github.com/harvesthq/chosen/issues/86

答案 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操作。