回答
Bootstrap模式打开时触发事件。在你的情况下,我建议绑定一个事件到show.bs.modal
事件并解除你的关键处理事件。简单示例:
$('#myModal').on('show.bs.modal', function (e) {
// yadda yadda .unbind()
})
Docs:http://getbootstrap.com/javascript/#modals,向下滚动到事件。
尽管我不喜欢这个问题,但这仍然是一个很好的答案,所以+1 – christopher 2014-08-30 12:15:39
是的,但是对于特定的模式。我想要一个通用的解决方案。 – Razer 2014-08-30 12:28:07
@Razer根据文档:“重叠模式不支持 - 一定不要打开模式,而另一个模式仍然可见。一次显示多个模式需要自定义代码。”因此,无论您是否有内置的自定义代码,或者您尝试修复的场景都不存在。如果你确实已经修复了,你可以绑定到'$(document).on('show.bs.modal','*',function(){...})' – Bjorn 2014-08-30 15:37:00
你可以试试这个:
alert($('#myModal').hasClass('in'));
这里借此:
$(document).find('.modal').each(function(e) {
var element = $(this);
if ((element.data('bs.modal') || {isShown: false}).isShown) {
console.log('a modal is open');
}
});
如果你使用jQuery,您可以使用此:
function isABootstrapModalOpen() {
return $('.modal.in').length > 0;
}
香草JS解决方案:
function isABootstrapModalOpen() {
return document.querySelectorAll('.modal.in').length > 0;
}
此解决方案适用于任何模态,而不仅仅是特定模态。
编辑:上面的代码测试是否在任何给定时刻模态是开放的。正如在其他的答案指出,如果要禁用的事件处理程序的模式被打开的那一刻,你将不得不使用引导事件,就像这样:
// when any modal is opening
$('.modal').on('show.bs.modal', function (e) {
// disable your handler
})
// when any modal is closing
$('.modal').on('hide.bs.modal', function (e) {
// enable your handler
})
您也可以在事件中使用isABootstrapModalOpen处理程序,以测试处理程序的代码是否必须执行(所以每次打开/关闭模式时都不要启用/禁用处理程序)。
function eventHandler(e) {
// if a modal is open
if(isABootstrapModalOpen()) {
// prevent the event default action
e.preventDefault();
// and exit the function now
return;
}
// if a modal is not open
// proceed to the rest of the handler's code
}
我的解决方案是使用jQueries的hasClass方法。
return $('div.modal).hasClass('in'); // True if open, false if closed
- 1. 检查元素是否具有特定类并打开引导模式
- 2. 如何检查窗体是否有任何ShowDialog()窗体打开?
- 3. 检查AngularJS模块是否被引导
- 4. 如何检查次要模式(.e.g flymake-mode)是否打开?
- 5. 获取NoSuchElementError当检查以查看模式是否打开
- 6. 是否有命令检查Git Bash是否以管理员模式打开?
- 7. 打开模式,不用导航引导
- 8. Twitter引导 - 通过已打开的模式打开模式
- 9. 检测何时打开模式 - 引导3
- 10. 有没有办法检查istream是否以二进制模式打开?
- 11. 如何检查tsqlconnection是否打开?
- 12. 如何检查文件是否打开
- 13. 如何检查GPRS/3G是否打开?
- 14. 如何检查sql_safe_updates是否打开?
- 15. 检查文件是否在任何应用程序中打开
- 16. 检查程序是否打开。如果没有,打开它
- 17. Windows - Python,检查程序是否打开,如果是,从任务栏打开它?
- 18. ScriptManager.RegisterClientScriptBlock不打开引导模式
- 19. 在引导模式中打开表格
- 20. 无法打开模式引导
- 21. WinForms - 检测是否有任何对话窗口打开
- 22. 如何检查Bootstrap UI模块是否打开? - AngularJS
- 23. 是否有任何程序检查数据集是否有索引?
- 24. 检查是否有任何输入值
- 25. 是否有任何图像格式允许打开注释框?
- 26. Intellij以检查模式打开Dartium
- 27. Xamarin ios - 如何检查分割视图是否在分割模式下打开
- 28. 只有一个引导模式打开 - 其他模式打开 - 其他模式不显示
- 29. 检查相机是否打开?
- 30. 检查一张表是否打开
你做了什么努力? – 2014-08-30 12:12:55
我已经从下面的答案中看到了解决方案。但这不是我想要的。我想要一个通用解决方案,它适用于页面上的任何引导模式。 – Razer 2014-08-30 12:30:23