Bootstrap Multiselect插件无法取消选中所有元素

时间:2015-04-15 12:27:44

标签: javascript jquery html twitter-bootstrap bootstrap-multiselect

我正在使用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')

        }
    });

2 个答案:

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