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

时间:2019-04-24 14:05:51

标签: javascript jquery jquery-ui-multiselect

我正在尝试检测JQuery MultiSelect上的更改以触发另一个位置的更新。更改内容的常规javascript无法正常工作,因为select不会更改。我找到了一个称为“ beforeclose”的方法,该方法是从MultiSelect的close函数中调用的。我想我可以用。我发现,如果在进行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 个答案:

答案 0 :(得分:0)

您可以创建一个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,自定义事件处理程序可以为您服务。