2015-02-24 82 views
0

我需要从一个流星包内取出一个类的内部<div>修改DOM,但下面的代码不起作用:如何从流星包

if (Meteor.isClient) { 
    Meteor.startup(function() { 
    $('div').removeClass('class-to-remove'); 
    }); 
} 

文档说:

在客户端上,首先会调用软件包的启动回调,然后是.html文件中的模板,然后是应用程序代码。

有一种方法可以从包中修改DOM?

回答

0

你试过香草JS代码而不是jQuery?

document.getElementById('divId').classList.remove('class-to-remove'); 

编辑:新样本附:

比方说,我们有这个模板标记:

<template name="appBody"> 
    <div id="myCustomDiv" class="I-will-stay-here I-will-be-removed-by-package"> 
    ... 
    </div> 
</template> 

包(下创建一个自定义的js文件/ lib中例如)并添加您的DOM操作代码eG: [项目根目录]/packages/[您的p ackage] /lib/my-custom.js

if (Meteor.isClient) { 
    Template.body.rendered = function() { 
     $('#myCustomDiv').removeClass ('I-will-be-removed-by-package'); 
    }; 
}; 

在你package.js确保你有以下api.use配置:

api.use(['jquery','templating','spacebars','blaze','ui'], 'client'); 
api.addFiles('/lib/my-custom.js','client'); 

Working sample I've done on github to showcase the solution

+0

是的,它不起作用。 :( – 2015-02-24 13:44:13

+0

Mayby只是在这里指出了明显的,但“Template.body.rendered”这一行应该是“Template.appBody.rendered = function(){...},因为模板被命名为”appBody“而不是”body“ 。 – cfs 2015-02-24 20:16:52

+0

@cfs该软件包在启动时不知道任何appBody模板。template.body是来自api.use(['templating',...],'')的通用模板对象。 – Meteorpoly 2015-02-25 03:24:04