从Select2 3.3.1开始,以下是其README.md中记录的内容
Select2支持哪些选择的功能?
- 处理大型数据集:选择要求将整个数据集作为
option
标记加载到DOM中,这限制了它只能用于小型数据集。Select2使用一个函数来即时查找结果,从而允许它部分加载结果。- 结果分页:由于Select2可处理大型数据集,并且一次必须支持分页,因此仅加载少量匹配结果。当用户滚动到当前加载的结果集的底部以允许“无限滚动”结果时,Select2将调用搜索功能。
- 结果的自定义标记:选择仅支持呈现文本结果,因为这是标签支持的唯一标记
option
。Select2提供了一个扩展点,可用于生成任何类型的标记来表示结果。- 动态添加结果的能力:Select2提供了从用户输入的搜索词中添加结果的能力,从而可以将其用于标记。
恕我直言,选择“维护”,但不是“积极维护”。341个问题和51个选择的拉取请求。Select2有128个问题和25个拉取请求。我认为这些模式基本上是
- 选择表面上对您更具吸引力的那个
- 在一个或两个应用程序中使用它
- 遇到定制问题或限制
- 也许尝试通过问题和请求请求与社区合作
- 最终受够了,并使用在此过程中学到的知识来建立自己的
无论您选择哪一个,如果您的用例正好在他们的最佳选择中,则任何一个都可以使用。如果没有,您最终将不得不编写自己的代码或对它们进行大量自定义。无论哪种情况,具体选择哪个都不是那么重要。我想在这里我将与@Andy Ray和@paul一起使用,Select2可能是更好的初始选择。
另一个值得一提的区别是,它Chosen
是在Sass
和中开发的,CoffeeScript
而Select2
平原CSS
和是JS
。这是我个人的选择,Sass
并且CoffeeScript
不必要的复杂性层使得调试困难。
在尝试了两种方法之后,我决定都不使用它们-尝试获得Select2
创建项功能的过程非常麻烦,因为在连接到<select>
元素时根本无法做到这一点-只是没有很好地考虑到我会遇到的麻烦跳过。
我已经决定使用selectize.js,它只是将新<option>...</option>
元素添加到表单的DOM中,这是理智的。它也确实可以使用LESS
-但我会绕过它,而CSS
直接在您的项目中定制编译结果。
selected.js与select2.js
- 麻省理工学院的许可证
- 依存关系:
- Select2:jQuery
- 选择:tbc
- 桌面浏览器支持:
- 选择2:IE8 +
- 选择:IE8 +
- 设备支持:
- Select2:不清楚
- 选择:在iPhone,iPod Touch和Android移动设备上禁用
- 重量(最小):
- 选择2:57KB
- 选择的:27KB
- 用法:Select2支持更多的“精美” UI(请参阅“模板”)
- 这两个代码库都可以在Github上找到
- Select2:贡献:非常活跃
- 选择:捐款:比Select2少3倍
ps。当我发现有关遗漏点的更多信息时,我将尝试更新此答案
首先,让我告诉您Chosen和Select2是两个很棒的插件,这是我对Chosen的个人经验。关于选择,他们所说的都是正确的。
PēterisCaune指出的问题select
已存在2年,但仍无官方解决方法。根本没有关于API的好的文档。已经指出了很多次(观看第671期),但仍然一无所获。他们花了将近2年的时间解决了这个问题,如果您overflow:hidden
在显示div之前隐藏了div,则选择的选择基本上是行不通的(并且您必须使用一个witdh:X%
根本不会知道是否不查找该问题的选项)。
我要说的主要问题是修复速度,如第92期中的DelvarWorld所述:
我的请求请求解决了这个问题,但像我的另一个请求和许多选择的请求一样,它们被忽略了。该项目的贡献者太多,而代码库却太少。
我首先选择了Chosen的MIT许可证,但遇到了所有这些问题(下拉菜单没有找到API,隐藏了几个小时的溢出隐患),所以我决定切换到select2,因为它具有更好的文档,没有下拉菜单bug和更快的修复。
在Select2中起作用但在Chosen中不起作用的一项功能是select
在具有overflow: hidden
或的元素内部overflow: auto
。
选择的对应问题:https : //github.com/harvesthq/chosen/issues/86
我发现使用这两个插件的一些区别:
-
使用select2,您可以在选项中的任何位置进行搜索。例如,如果您有一个名为ABCDEFG的选项,并且在CDE中键入,则将在搜索结果中获得该选项,但是选择该选项后,您必须键入AB ..以此类推才能得到结果。
-
我发现对于较大的数据集,选择似乎比select2更快,尤其是在IE中。
Select2支持移动设备,而Chosen专门在iPod,iPhone和移动Android上禁用自身。如果您想在移动设备上使用“扩展”选择框,则可以轻松进行选择。
我对Select2的体验在台式机上非常出色,但在触摸式移动设备上却千差万别,总是存在一些怪癖。例如,在具有ics和股票浏览器的xperia st15i上,由于键盘窃取了焦点,下拉菜单始终处于关闭状态。再次将其打开的唯一方法是触摸菜单数十次,用手指按住一秒钟以及其他伏都教具。还是要在下拉列表关闭时开始输入,有多少用户会发现这一点?
Selectize.js似乎比选择二顺利得多,但在选择或inputed它移动页面一路向左由于某种原因,价值它也有自身的移动的例如问题。另外,在不支持溢出的较旧的Android 2.x设备上,由于键盘不会弹出,因此无法选择几个最上面的选项。:(
仍然必须测试选择的选项,毕竟禁用移动设备可能不是一个坏主意,但最终,良好的旧下拉列表将始终在所有地方起作用。
更新:现在我也测试了选择,并且在一个方面也更好:默认情况下,它在移动设备上不起作用(很棒!),但是它具有过滤单词的问题。例如,不会在单词的中间进行搜索,并且如果您使用&nbsp hack进行匹配,它也会忽略完整的选项。回到绘图板。
为什么我选择select2而不是选择
select2的主要功能(没有其他控件会自动魔术化)是“清除所有”选择,并且控件的右侧带有“ x”。这是我的应用程序的杀手级功能。我不知道为什么其他选择标记增强库缺少此功能。
Select2不支持AJAX选择
选择2的大小比选择的小。
我之所以选择Select2,是因为没有官方支持Ajax操作。
文章标签:javascript , jquery-chosen , jquery-select2
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!