gpt4 book ai didi

javascript - Meteor + Bootstrap - 警报已关闭。bs.alert 未触发

转载 作者:行者123 更新时间:2023-12-03 10:17:09 24 4
gpt4 key购买 nike

我正在使用 Meteor 和 Bootstrap,以及 nemo64:bootstrap 包。在 custom.bootstrap.json 中,我打开了“alerts”和“alert”。

我正在 try catch closed.bs.alert模板事件中的事件。由于某种原因,它不会捕获。

Template.alert.events({
'closed.bs.alert .alert': function () {
console.log('closed'); // does not trigger
}
});

奇怪的是,close.bs.alert确实有效:

Template.alert.events({
'close.bs.alert .alert': function () {
console.log('closed'); // triggers
}
});

此外,如果我通过 jQuery 添加事件,我可以捕获 lated.bs.alert:

$('.alert').on('closed.bs.alert', function () { 
console.log('closed'); // triggers
});

所以,我知道我的事件格式正确,并且我知道 close.bs.alert 事件正在触发...但由于某种原因,我无法使用 Template.alert 捕获它。事件。

有什么想法吗?

最佳答案

我深入研究了 Bootstrap 代码,发现它在哪里触发了此事件:alert.js, line 50

首先,我要使用的技术:

Templates.alert.onRendered({
$('.alert').on('closed.bs.alert', function (e) {
console.log('closed'); // triggers =D
});
});

我认为问题在于 Bootstrap 在触发事件之前分离了警报,所以像 $(document).on('lined.bs.alert', '.alert') 无法工作。我不能 100% 确定,但我怀疑 Meteor 的 Template.my_template.events() 触发器也使用了非常相似的方法。

通常这会起作用:

$(function () {
$('.alert').on('closed.bs.alert', function () {
console.log('closed'); // doesn't trigger
});
});

但是,Meteor 破坏了该计划,因为我正在从数据加载警报,但在触发时警报并不存在。

但是,通过将 jQuery 风格的 on() 放入 Template.my_template.onRender() 中似乎可以解决问题。

此外,除非警报具有“fade”类,否则 Bootstrap 不会引发该事件。您可以分配淡入淡出类,而不包括“过渡”模块。如果您将其关闭,您将不会获得效果,但事件无论如何都会触发。

关于javascript - Meteor + Bootstrap - 警报已关闭。bs.alert 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29814250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com