Twitter引导程序模式隐藏事件只触发一次
Twitter bootstrap modal hidden event only fires once
我使用的页面上定义了一个模态("#议程模态")。当一个触发器(.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的原生模态。
相关文章:
- 窗口退出时的模式弹出窗口 - 重置一次
- Bootsrap模式在页面加载时触发,每个用户一次
- jQuery每5个工作小时重置一次颜色模式
- jQuery UI 对话框模式仅使用类选择器打开一次
- 简单模式弹出窗口显示每个会话一次
- 在javascript中获取除最后一次外的所有模式
- 使用lookahead获取javascript中模式的最后一次出现
- 如何使模式窗口只显示一次
- 引导模式只对远程数据源启动一次
- Twitter引导程序模式隐藏事件只触发一次
- Ng-pattern regex查找只出现一次的模式
- 如何从AsyncSubject(消费者模式)中准确地订阅一次元素
- 只对连续流作出一次反应的模式
- 淘汰模式窗口只打开一次
- 每x秒调用一次jQuery函数(对象文字模式)
- 使用JQuery Cookie每周显示一次Bootstrap模式
- Ajax模式只工作一次
- 使用布尔值只显示一次引导模式
- 加载带有引导模式的ajax页面,然后一次自动启动该模式
- 语义UI模式在Meteor中只显示一次