我使用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。
有什么想法吗?
答案 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