显示方法上的Bootstrap模式运行多次

时间:2013-04-10 16:52:30

标签: javascript twitter-bootstrap

我使用twitter bootstrap modals的js来显示和隐藏模态:

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

....
$('#myModal').modal('hide')//hide

我的问题是多次显示和隐藏模态时,//do something...中的代码会多次运行。我想这是因为每次我显示一个模态时,它会听shown并且当模态隐藏并打开5次时该函数运行5次,是否有任何方法可以防止这种情况?


使用下面建议的方式fco确实解决了显示的问题,但不幸的是隐藏不起作用,即仍然执行一次以上,有一点不同,我使用data-dismiss="modal"隐藏对话框标记,而不是通过js。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

结帐.off()

如果您希望事件处理程序仅在您第一次执行以下操作时运行:

function myHandler() {
    //your event handling code here
    $('#myModal').off('show', myHandler);
}
$('#myModal').on('shown', myHandler);
$('#myModal').modal('show');
//...
$('#myModal').modal('hide');

答案 1 :(得分:2)

你应该使用一个而不是

.one()方法与.on()完​​全相同,只是处理程序在第一次调用后未绑定。例如:

$('#myModal').modal('show')//show
$('#myModal').one('shown', function () {
// do something…
})
$('#myModal').one('hidden', function () {
// do something…
})

....
$('#myModal').modal('hide')//hide