检测背景点击Bootstrap 3模态

时间:2014-01-19 11:50:58

标签: twitter-bootstrap twitter-bootstrap-3

使用Twitter Bootstrap 3时,无论如何都要知道模式何时被背景点击关闭?

5 个答案:

答案 0 :(得分:6)

我找不到任何内置功能来检查你想要的东西。

我找到的唯一“hacky”方式是检查文档的click / keyup事件,如果模态打开,请调用回调。

代码:

$(document).keyup(function (e) {
    if (e.which == 27 && $('body').hasClass('modal-open')) {
        console.log('esc')
    }
})

$(document).click(function (e) {
    if (e.target === $('.modal-scrollable')[0] && $('body').hasClass('modal-open')) {
        console.log('click')
    }
})

演示:http://jsfiddle.net/IrvinDominin/7nnUq/

答案 1 :(得分:2)

根据http://getbootstrap.com/javascript/#modals,您可以加入的唯一事件是showshownhidehidden。似乎没有区别于正常隐藏动作和背景隐藏动作。

答案 2 :(得分:0)

每种情况下最简单,最实用的方式 -

$(document).click(function (e) {
    setTimeout(function(){
        if (!$('body').hasClass('modal-open')) {
            $("#myModal iframe").attr("src", $("#myModal iframe").attr("src"));
        }
    },1000);
});

答案 3 :(得分:-1)

$(document).click(function (e) {
  if($(e.target).hasClass('modal-backdrop')){
    console.log("you clicked the backdrop!");
  }

答案 4 :(得分:-1)

$('.modal').modal({
    backdrop: 'static',
    keyboard: false
});

$(document).keyup(function(e) {
    if (e.which == 27 && $('body').hasClass('modal-open')) {
        console.log("esc");
    }
})
$(document).click(function(e) {

    if ($(e.target).hasClass("in") && $('body').hasClass('modal-open')) {
        console.log("backdrop click");
    }

})