22

我有一个绑定到隐藏模式对话框的功能的功能。

我正在使用类似于这个问题的公认答案的代码。

$('#myModal').on('hidden', function () {
    // do something…
})

但是,此对话框可能会重新打开以进行编辑,并且在发生这种情况时,我不一定要运行此代码。有没有办法“取消绑定”该功能,以便在对话框关闭时不再运行?我在文档中没有找到任何东西。

4

2 回答 2

43

您可以执行类似解除绑定到模式元素的所有事件的操作:

取消绑定模态中的所有事件:

/* First option */
$('#myModal').on('hidden', function (e) {
    $(e.currentTarget).unbind(); // or $(this)        
});

/* Second option is to call it directly when needed */
$('#myModal').unbind();

Bootrap 模式也有与之关联的特定事件,因此您还可以指定要取消绑定的事件。

/* Events are 'hidden', 'hide', 'show', 'shown' */
$('#myModal').unbind(/* specific event here */);

如果您希望删除与模式内容相关的事件,您只需清空其中的元素$('#myModal').empty()并适当地取消绑定这些元素。

于 2013-01-22T03:32:04.153 回答
19

采用:

$('#myModal').off('hidden');

为什么不解绑?

从 jQuery 3.0 开始,.unbind() 已被弃用。自 jQuery 1.7 起,它被 .off() 方法所取代,因此已经不鼓励使用它。

来源:jQuery API

于 2017-01-20T10:19:37.060 回答