您好我将twitter bootstrap模式的默认值设置为在用户点击背景时不关闭
$.fn.modal.defaults = {
backdrop: 'static'
, keyboard: false
, show: false
}
但是,有一种特殊情况需要覆盖此默认设置,以允许用户单击背景以关闭模式。
我试图在显示特定模态
时覆盖它//Modal to be displayed and allow user to close it by clicking on background
view = new Onethingaday.Views.Muses.MuseModalView
model: @options.muse
$('.modal').html view.render().el
$('.modal').bind 'shown', =>
$('.modal').modal
'backdrop': true
('.modal').unbind 'show'
$('.modal').modal('show')
但是,我上面的代码不起作用。任何人都知道如何修改代码使其工作。此外,上面的代码似乎正在改变应用程序中所有我的模态的默认行为,这不是我想要的。如何更改此特定模式的背景(即MuseModalView)?谢谢!
答案 0 :(得分:7)
我今天正在处理类似的问题。起初,我发现了这个讨论:https://github.com/twitter/bootstrap/issues/1202。 有人建议设置isShown为false,以防止模式窗口在背景点击时关闭:
$('myelement').data('modal').isShown = false
我不能说我喜欢这个黑客,特别是当我发现模态窗口没有正确关闭Ok / Cancel按钮时单击 - 而isShown设置为false。 我找不到更好的解决方案,所以我这样做了: 我设置了全局默认背景:“静态”(在背景单击时禁用关闭)并添加了以下代码:
$('#myModal').on('shown', function () {
$("div.modal-backdrop").on('click', function() {
if(myCondition == true) {
$('#myModal').modal('hide');
}
})
});
具有类模态背景的div在打开模态窗口时动态附加到主体,并在关闭时移除 - 用于每个模态窗口。这意味着如果我们堆叠模态窗口,我们应该确保正确处理这个问题。所以,我调整了我的上层代码:
$('#myModal').on('shown', function () {
$("div.modal-backdrop").each(function(){
if($(this).data('wired') !== 'true'){
$(this).on('click', function() {
if(myCondition == true){
$('#myModal').modal('hide');
}
}).data('wired', true);
}
})
});
此代码仅在myCondition为true时关闭模态窗口。 它应该适合我,我希望这也将帮助你和其他任何会遇到类似问题的人。