【问题标题】:Meteor + Bootstrap - Alert closed.bs.alert does not triggerMeteor + Bootstrap - 警报关闭.bs.alert 不会触发
【发布时间】:2015-07-01 02:18:03
【问题描述】:

我正在使用 Meteor 和 Bootstrap,以及 nemo64:bootstrap 包。在custom.bootstrap.json 我有“警报”和“警报”。

我正在尝试在模板事件中捕获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 添加事件,我可以捕获 closed.bs.alert:

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

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

有什么想法吗?

【问题讨论】:

    标签: javascript jquery twitter meteor twitter-bootstrap-3


    【解决方案1】:

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

    首先,我开始使用的技术:

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

    我认为问题在于 Bootstrap 在触发事件之前分离了警报,所以像 $(document).on('closed.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() 似乎可以解决问题。

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

    【讨论】:

    • 这也是我尝试过的,但它对我不起作用。还有什么我需要注意的吗?我得到了淡入淡出类,并将事件处理程序放在 onRendered 中。我使用官方的 twbs:bootstrap 包而不是 nemo64,但我验证了用于警报处理的 javascript 已加载。
    • 我刚刚用 nemo64:bootstrap 重新创建了同样的问题,我可以捕获 close.bs.alert 事件,但不能捕获 close.bs.alert,所以我假设问题是 dom 元素触发事件时已删除。
    • @illuminaut 确保你已经为元素添加了“fade”类。如果它不存在,则永远不会触发 closed.bs.alert 类。 (见我链接的文件的第 53 行)。如果不是这样,我建议您提出一个新问题,以便您发布代码示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多