3

我正在为我的选择选项元素使用Bootstrap Multiselect 插件。当用户从一个选择选项元素中选择一个(或所有选项)时,需要取消选中其他选择选项元素中的所有元素。我检查了文档以获取解决方案,当我在文档中使用代码时出现错误:

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')

        }
    });
4

2 回答 2

1

我试图通过删除 jQuery 和引导程序来重新创建您的问题。由于所有引导程序真正做的是样式,你可以在没有它的情况下使用插件(它看起来真的很糟糕)并且它不会抛出任何错误。

删除 jQuery 会抛出以下错误:

Uncaught TypeError: Cannot read property 'fn' of undefined
index.js:1 Uncaught ReferenceError: $ is not defined

我查看了最新版本bootstrap-multiselect.js的 1402 行是空白的,所以我不知道该错误来自哪里。

第 1401 行是:

}(window.jQuery);

我的猜测是您使用的是旧版本的插件,尽管这可能不会导致问题。尝试更新插件以查看是否有任何作用。

请注意,我在 Chrome v41 Mac OSX 10.10 上使用最新版本的 bootstrap-multiselect 在 jQuery 2.1.3 上对此进行了测试

于 2015-04-15T14:58:44.160 回答
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) {
 ...
于 2015-12-28T12:54:48.957 回答