我正在使用Bootstrap Multiselect plugin作为我的select选项元素。当用户从一个select选项元素中选择一个(或所有选项)时,需要取消选中其他select options元素中的所有元素。我检查了文档的解决方案,当我在文档中使用代码时出现错误:
bootstrap-multiselect.js:1042 (Uncaught TypeError: undefined is not a function)
有人知道问题在哪里吗?
这是我的代码:
$('#select1').multiselect({
includeSelectAllOption: true,
enableFiltering: true,
onChange: function(element, checked) {
//alert ("OK");//Alerts pop ups
$('#select2').multiselect('deselectAll', false);
$('#select2').multiselect('updateButtonText')
}
});
答案 0 :(得分:1)
我试图通过删除jQuery和bootstrap来重新创建你的问题。因为所有引导程序确实都是样式的,所以你可以在没有它的情况下使用该插件(它看起来非常糟糕)并且它不会抛出任何错误。
删除jQuery会引发以下错误:
Uncaught TypeError: Cannot read property 'fn' of undefined
index.js:1 Uncaught ReferenceError: $ is not defined
我查看了bootstrap-multiselect.js
的最新版本,1402行是空白的,所以我不知道该错误来自哪里。
第1401行是:
}(window.jQuery);
我的猜测是你使用的是旧版本的插件,虽然这可能不会导致问题。试试updating the plugin,看看是否有效。
请注意我在jQuery 2.1.3上使用Chrome v41 Mac OSX 10.10上最新版本的bootstrap-multiselect进行了测试
答案 1 :(得分:1)
在旧版本的插件中,第1042行看起来像
+1041 if (typeof option === 'string') {
+1042 data[option](parameter);
选项deselectAll
被命名为deselectall
,这会导致此行出错。如果您需要使用此版本的插件,只需将选项替换为deselectall
,它就可以正常使用。但我强烈建议您更新到上一个版本。
FWIW,GitHub中这个插件的第一个版本已经有deselectAll
这个功能,所以这个版本真的很旧了,我找不到它作为参考。但是我在我的工作场所遇到了同样的问题,我们以前使用的版本可能和OP一样。
+823 /**
+824 * Deselects all options.
+825 * If justVisible is true or not specified, only visible options are deselected.
+826 *
+827 * @param {Boolean} justVisible
+828 */
+829 deselectall: function (justVisible) {
...