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

标签 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 some... 中的代码会运行多次。我想这是因为每次我显示一个模态时,它都会监听 shown 并且当模态隐藏和打开 5 次时,该函数会运行 5 次,有什么方法可以防止这种情况吗?


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

有什么想法吗?

最佳答案

您应该使用 one 而不是 on

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

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

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

关于javascript - 显示方法上的 Bootstrap 模式多次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931886/

相关文章:

javascript - 使用 `window.onbeforeunload` 阻止用户离开

javascript - ng-model 绑定(bind)到选择标签产生空默认值?

javascript - 如何使用 Bootstrap Validator 提交表单

css - 如何在 View 中设置 Bootstrap 进度条的动画?

javascript - 无法看到清晰的图片 Bootstrap LightBox

javascript - 如何在phantomjs中加载html后立即返回html?

javascript - 在表之间共享 td 宽度

javascript - 如何将我的数据数组转换为键值对

html - 折叠的导航栏与页面内容重叠

html - 我想在 twitter bootsrap 中将 col-sm-4 转换为两个相等的列(一个带有图像+一个带有内容)和底部的一行