【发布时间】:2016-06-13 21:50:30
【问题描述】:
在我的项目中,我检查 Select2 插件是否以这种方式加载
if (jQuery().select2)
但现在我将尝试验证加载了 Select2 插件的哪种版本(3.5.X 或 4.X)。我想也许您可以检查版本 4.X 中是否引入了版本 3.5.X 中不存在的选项/功能。 在你看来,可行吗?我该怎么做?谢谢
【问题讨论】:
标签: jquery jquery-select2 jquery-select2-4
在我的项目中,我检查 Select2 插件是否以这种方式加载
if (jQuery().select2)
但现在我将尝试验证加载了 Select2 插件的哪种版本(3.5.X 或 4.X)。我想也许您可以检查版本 4.X 中是否引入了版本 3.5.X 中不存在的选项/功能。 在你看来,可行吗?我该怎么做?谢谢
【问题讨论】:
标签: jquery jquery-select2 jquery-select2-4
Select2 4.0 中有一个新的isOpen 方法。
你可以在你的开发者工具栏中使用类似的东西:
try {
$("#a-select2-element").select2('isOpen');
'select2 v4.x';
} catch(e) {
'select2 v3.x';
}
使用 Select2 v3.5.3 和 v4.0.3 测试
【讨论】:
Select2 v3 和 v4 的事件不同!您可以简单地调用任一版本的事件来仅为该版本运行代码。如果事件不存在,它将被忽略。如果您需要在 v3 和 v4 共有的 change 事件中进行测试,请查看以下代码:
var $el = $('#your-element'),
s2Version3 = false,
s2Version4 = false;
$el.on( 'select2:opening', function() {
// this event only works for v4
s2Version4 = true;
});
$el.on( 'select2-opening', function() {
// this event only works for v3
s2Version3 = true;
});
$el.on( 'change', function() {
if ( s2Version3 ) {
// change things for v3
} else {
// change things for v4
}
});
附:要检查 jQuery 函数是否可用,isFunction 会派上用场。
var s2Exists = $.isFunction( $.fn.select2 );
【讨论】: