Twitter引导程序模式隐藏事件只触发一次

Twitter bootstrap modal hidden event only fires once

本文关键字:一次 模式 引导程序 隐藏 事件 Twitter      更新时间:2023-09-26

我使用的页面上定义了一个模态("#议程模态")。当一个触发器(.advanced项)被点击时,我显示了这个带有远程内容的模式,如下所示:

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

这很好(我使用的是监听$body.on,因为.议程项是通过javascript添加的)。

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

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

当然,全部都在中

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

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

我不知道,但这是因为监听器on("隐藏",函数…)不再"绑定"了吗?我想。on会一直赶上活动吗?

模态的代码直接来自twitter:

<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>

有什么想法吗?我真的很想知道模态何时关闭,这样我就可以更新页面中可能被更改的部分。

使用铁轨btw,不确定这是否重要。。。

更改

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

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

这是Bootstrap的已知问题

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

这里有一个例子:

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

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

  • 单选按钮change()事件在使用$().button(';reset';)时只触发一次

无法解决这个问题-一切看起来都很好,但rails管道添加了相当多的js,所以我不能排除有什么东西干扰我的js的可能性。

现在改为使用jquery的原生模态。