2015-02-24 72 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