回答
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. 檢查是否有任何UserControl打開
- 2. 檢查元素是否具有特定類並打開引導模式
- 3. Angular-ui:是否打開任何模式?
- 4. 如何檢查窗體是否有任何ShowDialog()窗體打開?
- 5. 打開引導模式
- 6. 檢查是否有任何對話框打開
- 7. 檢查AngularJS模塊是否被引導
- 8. 如何檢查次要模式(.e.g flymake-mode)是否打開?
- 9. 是否有命令檢查Git Bash是否以管理員模式打開?
- 10. 獲取NoSuchElementError當檢查以查看模式是否打開
- 11. 檢查Thickbox是否打開
- 12. 打開模式,不用導航引導
- 13. Twitter引導 - 通過已打開的模式打開模式
- 14. 檢測何時打開模式 - 引導3
- 15. SQL模式設計模式是否有任何開源資源?
- 16. 使用ADB檢查飛行模式是否打開?
- 17. 有沒有辦法檢查istream是否以二進制模式打開?
- 18. 如何檢查GPRS/3G是否打開?
- 19. 如何檢查文件是否打開
- 20. 如何檢查tsqlconnection是否打開?
- 21. 如何檢查Facebook是否被打開
- 22. 如何檢查jframe是否打開?
- 23. 如何檢查sql_safe_updates是否打開?
- 24. 如何檢查文件是否打開
- 25. 如何檢查EventMachine :: Connection是否打開?
- 26. 如何檢查引導程序模式是否打開,所以我可以使用jquery驗證
- 27. 檢查文件是否在任何應用程序中打開
- 28. 在做任何事之前檢查文件是否打開
- 29. 檢查程序是否打開。如果沒有,打開它
- 30. Windows - Python,檢查程序是否打開,如果是,從任務欄打開它?
你做了什麼努力? – 2014-08-30 12:12:55
我已經從下面的答案中看到了解決方案。但這不是我想要的。我想要一個通用解決方案,它適用於頁面上的任何引導模式。 – Razer 2014-08-30 12:30:23