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

Pau*_*aul 154 javascript jquery-chosen jquery-select2

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

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

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

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

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

Mr.*_* 14 90

从Select2 3.3.1开始,下面是其README.md中记录的内容

选择的Select2支持不是什么?

  • 使用大型数据集:选择需要将整个数据集作为option标记加载到DOM中,这限制了它使用小型数据集.Select2使用函数即时查找结果,这允许它部分加载结果.
  • 分页结果:由于Select2适用于大型数据集,并且一次只加载少量匹配结果,因此必须支持分页.当用户滚动到当前加载的结果集的底部时,Select2将调用搜索功能,允许"无限滚动"结果.
  • 结果的自定义标记:选择仅支持呈现文本结果,因为这是标记支持的唯一标记option.Select2提供了一个扩展点,可用于生成任何类型的标记来表示结果.
  • 能够动态添加结果:Select2提供了从用户输入的搜索词添加结果的功能,这使得它可以用于标记.

  • 没有通过AJAX获取数据的任何东西都可以在没有Javascript的情况下工作.Select2适用于预先填充的值,并且不必使用AJAX. (9认同)
  • fwiw 有人为 Chosen 开发了“即时添加结果”功能:https://github.com/shezarkhani/chosen/tree/create_new_options 我在 ExpressionEngine 附加组件 [MX Select Plus](http://devot-ee.com/add-ons/mx-select)(这是我到达这里的方式,因为现在有一个使用 Select2 的竞争插件)。 (2认同)

Pet*_*ons 40

恕我直言选择是"维持"但不是"积极维护".选择了341个问题和51个拉取请求.Select2有128个问题和25个拉取请求.我认为这些模式基本上是

  • 挑选一个表面上更吸引你的人
  • 在一两个应用程序中使用它
  • 碰到定制问题或限制
  • 也许尝试通过问题和拉取请求与社区合作
  • 最终厌倦了,只使用你在这个过程中学到的东西建立你自己

无论你选择哪一个,如果你的用例完全在他们的最佳位置,任何一个都可以工作.如果没有,你最终必须自己编写或大量定制这些.在任何一种情况下,选择哪一个并不是那么重要.我想我会支持@Andy Ray和@paul,Select2可能是更好的初始选择.

  • 在我看来,更多问题意味着更多人关心和使用.更大的社区倾向于产生更好的代码(这不适用于所选择的).AngularJS:397个问题,49个需求; joyent/node:476个问题,98个请求.我想知道firefox,linux内核或gcc的数字是多少. (4认同)

Dan*_*ski 21

另一个值得一提的区别是,Chosen在开发SassCoffeeScriptSelect2为平原CSSJS.这是我个人的选择,Sass并且CoffeeScript是不必要的复杂层,使调试变得困难.

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

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

  • selectize.js使用[less](http://lesscss.org/)。这比“ Sass”少了技术上的死胡同吗? (2认同)

Adr*_* Be 18

chosen.js vs select2.js

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

select2.js贡献 selected.js贡献

PS.当我发现有关缺失点的更多信息时,我会尝试更新此答案


zip*_*ipp 13

首先,让我告诉你,Chosen和Select2是两个很棒的插件,这是我对Chosen的个人经历.所有他们所说的都是关于选择的.

PēterisHaune指出的问题select是2岁,仍然没有正式修复.API没有好的文档.有人指出(观察问题671)很多时候,但仍然没有.他们花了差不多两年的时间来解决这个问题,如果你overflow:hidden在显示它之前隐藏了div,那么选择基本上是行不通的(你必须使用一个witdh:X%你根本不知道如果你不寻找问题的选项).

我要说的主要问题是像第92期DelvarWorld所说的修复速度:

我的拉取请求修复了这个问题,但是就像我的另一个和许多选择它们一样,它们被忽略了.这个项目有太多的贡献者,代码库太少.

我首先选择Chosen作为其MIT许可证,但我有所有这些问题(下拉切换,没有找到API,寻找溢出隐藏的时间),所以我决定切换到select2,因为它有更好的文档,没有下拉切割bug和更快的修复.


Pēt*_*une 9

在Select2中工作但在选择中不起作用的一个功能是select具有overflow: hidden或的内部元素overflow: auto.

在此输入图像描述

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


reg*_*ahn 6

我发现使用这两个插件的一些差异:

  • 使用select2,您可以在选项中的任何位置进行搜索.例如,如果您有一个名为ABCDEFG的选项并且您输入CDE,您将在搜索结果中获得该选项,但选择后您必须键入AB ..等等以获得结果.

  • 我发现,对于较大的数据集,选择似乎比select2更快,特别是在IE中.

  • 是选择似乎搜索单词,即在他们的示例页面上键入`Kingdom`将返回`United Kingdom`,这似乎是一种非常合乎逻辑的方式,并且您还可以指定`$("#element").selected({ search_contains:true});`. (2认同)
  • 我同意你的意见,通常就是这样.你一直在寻找文字.但是在很多情况下,如果你输入'abc',你会在括号中加上像'xyz(abc)'这样的东西,你也在寻找不会被返回的'xyz'.我想,它归结为你正在使用它的场景.在我的网络应用程序中,我使用了它们相关的两个.我喜欢选择更多,因为它在IE中的渲染速度更高. (2认同)

dan*_*nvk 5

Select2支持移动设备,而Chosen 专门在iPod,iPhone和移动Android上禁用自己.如果您想在移动设备上使用"扩展"选择框,这将使您的选择变得简单.


dev*_*101 5

我对Select2的体验非常适合桌面,但触控移动设备的变化很大,总有一些怪癖.例如,在带有ics和stock浏览器的xperia st15i上,由于键盘窃取焦点,下拉列表总是关闭.只有这样才能让它再次打开就是触摸菜单几十次,握住手指一秒钟和其他伏都教魔法.或者在下拉列表关闭时开始输入,有多少用户会想出来?

Selectize.js似乎比Select2更顺畅,但它在移动设备上也存在问题,例如当选择或输入值时,由于某种原因它会将页面一直移动到左侧.此外,在不支持溢出的旧版Android 2.x设备上,由于键盘没有弹出,因此无法选择几个顶级选项.:(

仍然需要测试选择,毕竟移动设备被禁用可能不是一个坏主意,但最终好旧的下拉列表始终无处不在.

更新:现在我也测试了Chosen,它在一个领域更好:默认情况下它不适用于移动设备(太棒了!),但它有过滤字问题.例如,不会在单词的中间进行搜索,如果您使用  hack作为对象,它也会忽略完整的选项.回到绘图板.