【问题标题】:Is there Meteor Any route.ready callback? For easier jQuery event attachment是否有 Meteor Any route.ready 回调?为了更简单的 jQuery 事件附件
【发布时间】:2015-11-11 21:15:29
【问题描述】:

由于流星从 blaze 模板动态创建 DOM 内容,因此附加到动态元素的 jquery 事件存在问题。

每次 DOM 更改后,一些元素可能会重新出现在应用程序中,并且需要重新附加 jquery 事件,例如 $(".element").onclick(...);

我想到了类似于$(document).ready(...); 的解决方案,但对于路线,可能看起来像:

Router.route.ready(function(){
  $(".element").onclick(...);
});

这将是对附加事件使用常规 jQuery 语法的简单解决方案,并且会在每个路由加载后运行。

目前是否有实现类似功能的解决方案?

【问题讨论】:

    标签: javascript jquery meteor iron-router meteor-blaze


    【解决方案1】:

    将事件附加到 DOM 元素的快速方式是使用模板事件,例如:

    Template.foo.events({
      'click .element': function(ev){
        ... your code
      }
    });
    

    这在范围界定方面很方便,确保您将事件附加到模板中实际存在的元素,并处理通过{{#each ...}} 块多次呈现的模板。

    【讨论】:

    • 是的,这是 Meteor 附加事件的方式,但它仅适用于特定模板。我想要实现的是同时为许多模板附加事件,并使用常规的 jQuery 语法。 Iron 路由器有 Router.onAfterAction 在这种情况下可能会有所帮助。
    • 另一种方法是使用 template-extension 之类的东西在模板之间继承/共享事件。
    • 事件继承是一个很棒的东西,可以添加到工具包中,感谢大卫!
    • @Dariusz:抱歉,您最初的问题并不清楚您正在尝试解决原生事件映射问题。
    • @MichelFloyd 对,这在我包含的示例代码中可能不够清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2010-11-17
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多