我正在使用带远程选项的模态对话框:
<a target="profile-banner" data-target="#edit-slide-dlg" href="/Banner/SlideEditModal/1/1"
data-toggle="modal" class="banner-slide-control">Edit</a>
其中:
<div id="edit-slide-dlg" class="modal fade" tabindex="-1"></div>
另外,我正在收听使用event.target属性的shown.bs.modal事件:
$("body").on("shown.bs.modal", function (event) {
// do something with event.target
}
当我第一次打开对话框时,没有触发此事件的某些原因。它只是第二次被解雇了。我试图浏览bootstrap脚本并找到此代码(请参阅我的评论):
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
transition ?
that.$element.find('.modal-dialog') // wait for modal to slide in
.one($.support.transition.end, function () {
that.$element.focus().trigger(e) //THIS LINE NEVER EXECUTED AT FIRST DIALOG OPENING
})
.emulateTransitionEnd(300) :
that.$element.focus().trigger(e)
所以,我关闭了 transition 作为一种解决方法,它使事件第一次被触发,但是,event.target是空字符串。第二次,event.target包含适当的对话框HTML。这是我的代码或引导程序的问题吗?
答案 0 :(得分:5)
我有完全相同的问题。我可以使用此StackOverflow问题的解决方案来修复它:Bootstrap modal 'loaded' event on remote fragment
基本上你必须手动打开模态并自己实现Ajax加载。类似的东西:
$modal.modal({
'show': true
}).load('/Banner/SlideEditModal/1/1', function (e) {
// this is executed when the content has loaded.
});
答案 1 :(得分:0)
对于迟到并处理大量相关问题的任何人来说,related post 的这个答案完全为我解决了 OP 问题...