【问题标题】:bootstrap, modal dialogs, shown.bs.modal event doesn't fire引导程序、模态对话框、showed.bs.modal 事件不会触发
【发布时间】:2013-12-02 23:27:40
【问题描述】:

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

<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 属性的显示.bs.modal 事件:

$("body").on("shown.bs.modal", function (event) {
  // do something with event.target 
}

第一次打开对话框时没有触发此事件的某些原因。而且它只是第二次被解雇。我尝试浏览引导脚本并找到此代码(请参阅我的评论):

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

【问题讨论】:

  • 投票结束:Bootstrap 在版本 2 和 3 之间改变了很多东西。请阅读Migrating from 2.x to 3.0 以及Modals 的新文档
  • 我的问题适用于版本 3(实际上我从未使用过版本 2)。同样,这种滞后仅在使用远程选项时发生。估计时间有问题。我将尝试通过 JavaScript 而不是 Attributes 注入模态对话框。也许,我会自己加载模态对话框内容。还不想放弃 bootstrap 的 modals :)。
  • 您正在使用 v2 标记。你的modal-diag 班级在哪里?
  • 您的意思是“模态对话框”类吗?模态对话框内容(包括带有“modal-dialog”类的 DIV)从指定的 url:href="/Banner/SlideEditModal/1/1" 加载(参见我的原始示例)。稍后我可以提取精确的 HTML……我不确定我在哪里使用了 v2 标记。如果您认为这可能是一个问题,请告诉我,我会尝试更改问题位置。
  • 糟糕,是的modal-dialog。您的问题不完整(不符合SSCCE 准则)。我建议删除data-toggle 触发属性,而是仅在内容存在时使用 JS 打开模式

标签: javascript jquery twitter-bootstrap-3


【解决方案1】:

我遇到了完全相同的问题。我可以用这个 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.
});

【讨论】:

  • 当这个模式关闭时触发的事件呢?
  • 关于事件在这里寻找更好的答案:stackoverflow.com/questions/19279629/…
  • 你好,安东。我相信这个答案将帮助我解决我的问题:stackoverflow.com/questions/47609994/… 我对如何将 href 发送到 jQuery 有疑问: load('/Banner/SlideEditModal/1/1' 因为有几个按钮调用模态我的看法。会进行调查,但要感谢您提供此线索。
【解决方案2】:

对于迟到并遇到许多相关问题的任何人,related post 的这个答案完全为我解决了 OPs 问题...

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多