首页 > 解决方案 > 将 JQuery MultiSelect 添加到现有的 MultiSelect 对象

问题描述

我正在尝试检测 JQuery MultiSelect 上的更改以触发另一个地方的更新。更改内容的正常 javascript 不起作用,因为选择不会更改。我找到了一个名为“beforeclose”的方法,它是从 MultiSelect 的关闭函数中调用的。我想我可以使用它。我发现如果我在制作 MultiSelect 时添加它,它会按预期工作并在关闭选择时记录消息。见下图:

$j("#selectId").multiselect({
    checkAllText: 'Select all',
    uncheckAllText: 'Deselect all',
    beforeclose : function() {
        console.log("before close")
    }
}).multiselectfilter();

但我不能这样做,因为 MultiSelect 是在其他地方创建的,所以我只需将该方法添加到它。我尝试了很多不同的东西,比如:

$j("#selectId").multiselect().data("ech-multiselect").beforeclose = function() {
    console.log("before close")
};

但似乎没有任何效果。有任何想法吗?谢谢

标签: javascriptjqueryjquery-ui-multiselect

解决方案


您可以创建一个 codepen 或 jsfiddle 来复制您遇到的问题吗?我确信我或其他人可以协助建立一个工作模型。

如果您想使用 beforeclose,我认为您的语法有点偏离。如果它是一个对话框,你会使用

$( ".selector" ).dialog({
  beforeClose: function( event, ui ) {}
});
// and bind an event listener
$( ".selector" ).on( "dialogbeforeclose", function( event, ui ) {} );

或者,您可以使用 jQuery 的on函数。改变看起来像:

$(document).on('change', '#selectId', function() {
  // Fires every time selectId is changed
});

https://api.jquery.com/on/#example-7自定义事件处理程序可以为您工作。


推荐阅读