在Twitter Bootstrap中,如何从关闭模式对话框中取消绑定事件?

Spi*_*ams 17 twitter-bootstrap

我有一个函数绑定到隐藏模式对话框的操作.

我使用的代码类似于问题的接受答案.

$('#myModal').on('hidden', function () {
    // do something…
})
Run Code Online (Sandbox Code Playgroud)

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

Den*_*ngo 35

你可以做一些事情来取消绑定与模态元素相关的所有事件:

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

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

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

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

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

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

  • $( '#myModal')解除绑定().有效,但它有点过于混乱...它还解除了使用角落里的"X"关闭窗口的能力. (3认同)
  • $('#myModal').unbind('hidden')诀窍:) (2认同)

Dan*_*mak 8

使用:

$('#myModal').off('hidden');
Run Code Online (Sandbox Code Playgroud)

为什么不解开?

从jQuery 3.0开始,.unbind()已被弃用.它自jQuery 1.7以来被.off()方法取代,所以它的使用已经不鼓励了.

来源:jQuery API.