【问题标题】:Twitter bootstrap modal hidden event only fires onceTwitter bootstrap modal隐藏事件只触发一次
【发布时间】:2023-03-11 22:00:01
【问题描述】:

我正在使用一个定义了单个模式的页面(“#agenda-modal”)。 当单击触发器 (.agenda-item) 时,我将显示这个带有远程内容的模式,如下所示:

$("body").on("click", ".agenda-question", function(e){
  var url = <build my url here>;
  $("#agenda-modal").modal({
    remote: url
  });
});

这很好用(我正在使用收听 $body.on 因为 .agenda-items 是通过 javascript 添加的)。

当模态关闭时,我想重新加载页面的一部分(模态内部的表单修改的部分)。所以我正在使用:

$("#agenda-modal").on("hidden", function(){
  alert("hidden");
});

当然,一切都在

$(function() {...});

这有效,但只有一次!当我第一次加载页面并单击触发器时,模式会加载并且当我关闭模式时会发生警报。如果我再次单击相同的触发器,模式会再次显示,但这次关闭警报时不会发生!

我不知道,但这是因为监听器 - on("hidden", function...) - 不再“绑定”了吗?我以为 .on 总能赶上事件?

模态代码直接来自推特:

<div class="modal hide fade" id="agenda-modal">
  <div class="modal-body"></div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal">Close</button>
  </div>
</div>

有什么想法吗?我真的很想在模态关闭时捕捉到,以便我可以更新页面中本应更改的部分。

顺便说一句,使用rails,不确定这是否重要......

【问题讨论】:

  • 你的浏览器是什么?,一些浏览器在第一个之后关闭了页面的警报..
  • 它是 Firefox,我已经看到它这样做了 - 它会询问我是否要停止进一步的警报,但通常是在 5 左右之后。也在 IE 9 中进行了测试,结果相同。

标签: javascript twitter-bootstrap modal-dialog jquery-events


【解决方案1】:

无法解决这个问题 - 一切看起来都不错,但是 Rails 管道添加了相当多的 js,所以我不能排除某些东西干扰了我的 js 的可能性。

现在改用 jquery 的原生模式。

【讨论】:

    【解决方案2】:

    这是 Bootstrap 的一个已知问题

    问题是事件需要在每次触发时重新添加,但会延迟。

    这是一个例子:

    function hiddenModal() {
        alert("hidden");
        setTimeout(function() {
            $("#agenda-modal").on("hidden", hiddenModal );
        }, 222);
    }
    
    $("#agenda-modal").on("hidden", hiddenModal );
    

    这类似于另一个问题,但针对不同类型的事件:

    【讨论】:

    • 您能否提供一个链接,指向该错误/功能被正式记录为“已知问题”的地方?
    【解决方案3】:

    改变

    $("#agenda-modal").on("hidden", function() {
      alert("hidden");
    });
    

    $(document).on('hidden.bs.modal', '#agenda-modal', function () {    
      alert("hidden");
    });
    

    【讨论】:

    • 我可以确认这可以解决问题。
    • IMO 最佳解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多