将 JQuery MultiSelect 添加到现有的 MultiSelect 对象

4
我正在尝试检测JQuery MultiSelect的更改以触发其他位置的更新。正常的javascript onchange不起作用,因为选择不会更改。我找到了一个叫做“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")
};

但似乎什么都没用。有什么想法吗?谢谢。
1个回答

1

你能创建一个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 一个自定义事件处理程序可能适合你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接