Javascript Meteor-在加载模板时将类添加到DOM元素

Javascript Meteor-在加载模板时将类添加到DOM元素,javascript,jquery,templates,dom,meteor,Javascript,Jquery,Templates,Dom,Meteor,我试图向DOM元素添加一个类,该元素是我所有DOM树的父元素。 我尝试了不同的方法: //this one doesn't work at all. DOM is not loaded Template.home.created = function() { Meteor.startup(function() { $("#wrapper").addClass('app'); }); } //this one only works if you do a page

我试图向DOM元素添加一个类,该元素是我所有DOM树的父元素。 我尝试了不同的方法:

//this one doesn't work at all. DOM is not loaded
Template.home.created = function() {
    Meteor.startup(function() {
        $("#wrapper").addClass('app');
   });
}

//this one only works if you do a page load, not if you render the template through a link (using router)
Template.home.created = function() {
    Meteor.startup(function() {
        $(document).ready(function() {
            $("#wrapper").addClass('app');
        });
   });
}

//also does not work if I click on a link
Template.home.created = function() {
    $(document).ready(function() {
        $("#wrapper").addClass('app');
   });
}

//does not work at all (I really expected this one to work by clicking on a link (using router))
Template.home.created = function() {
    $("#wrapper").addClass('app');
   });
}

我想做的事情再简单不过了:添加一个类,这样我就可以根据每个模板来设计包装器。如果您对如何执行此操作有任何建议,我们将不胜感激。

请尝试使用
Template.home.rendered
而不是
Template.home.created
。不要在Meteor.startup中使用
Meteor.startup
$(document.ready


创建模板对象时会调用
Template.home.created
,但此时未将任何内容呈现到dom节点中。

尝试使用
Template.home.rendered
而不是
Template.home.created
。不要在Meteor.startup中使用
Meteor.startup
$(document.ready


创建模板对象时会调用
Template.home.created
,但此时没有任何内容呈现到dom节点中。

初始化模板实例但不等待dom准备好进行操作时,会调用Template created方法

使用template rendered方法,该方法将在模板呈现DOM时调用(第一次加载一次,每次模板中的标记更改时调用一次)

类似的功能应该可以使用(尚未测试):


在初始化模板实例但不等待DOM准备好进行操作时,将调用template created方法

使用template rendered方法,该方法将在模板呈现DOM时调用(第一次加载一次,每次模板中的标记更改时调用一次)

类似的功能应该可以使用(尚未测试):


这很有效,谢谢。我不想使用home.rendered,因为它将在我重新渲染模板时运行此代码,而不仅仅是第一次。不管怎样,看起来他们正在为下一个版本修改这个,所以我认为这没什么大不了的。谢谢大家!@卢卡斯·洛博斯克没问题,我很高兴听到它起作用了。我不知道他们计划在下一个版本中更改“rendered”的行为。我很想看到它的推出,因为它可以解决我项目中一些低优先级的bug,这些bug一直困扰着我。这很有效,谢谢。我不想使用home.rendered,因为它将在我重新渲染模板时运行此代码,而不仅仅是第一次。不管怎样,看起来他们正在为下一个版本修改这个,所以我认为这没什么大不了的。谢谢大家!@卢卡斯·洛博斯克没问题,我很高兴听到它起作用了。我不知道他们计划在下一个版本中更改“rendered”的行为。我渴望看到它的推出,因为它将解决我的项目中一些一直困扰着我的低优先级bug。
Template.home.rendered = function(){
    var element = $("#wrapper");
    if(!element.hasClass("app")){
        element.addClass("app"); 
    }
}