bootstrap,模态对话框,shown.bs.modal事件不会触发

时间:2013-12-02 23:27:40

标签: javascript jquery twitter-bootstrap-3

我正在使用带远程选项的模态对话框:

<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。这是我的代码或引导程序的问题吗?

2 个答案:

答案 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 问题...

enter image description here