2015-09-13 112 views
4

我想定義一些變量,用於在我的應用程序佈局渲染完成後立即確定我的jQuery選擇器的範圍。如何在佈局渲染後初始化jQuery對象?

我試圖用定義它們:

Meteor.startup(function() { /* Define variables */ }) 

但它沒有工作,對象是空

這裏是我聲明我的應用程序佈局:

Router.configure({ 
    layoutTemplate: 'layout' 
}); 

這裏版面本身:

<template name="layout"> 
    <div id="page_container"> 
    <header id="page_header"> 
    </header> 

    <div id="page_content"> 
     {{> yield}} 
    </div> 
    </div> 
</template> 

這裏是我願意聲明變量:

L.BODY = $("body"); 
    L.PC = $("#page_content", L.BODY); 

本身工作正常的聲明,但L.BODY顯示我的應用程序的主體仍然是我試圖聲明這些變量的時間空。

一旦我的應用程序的佈局已經呈現,我該如何定義jQuery對象?

+0

。 非常感謝您的幫助! –

+0

這個問題和我的答案可能是有趣的,如果你需要在做任何JQuery的東西之前保證DOM元素存在。 http://stackoverflow.com/questions/32461639/how-to-execute-a-callback-after-an-each-is-done/32470003 –

+0

@KassymDorsel是的,它是非常接近,但是在一個不同的主題(迭代'#each'),在這裏並不適用。 –

回答

6

layout只是另一個模板。 jQuery需要存在的DOM元素來創建一個對象。

從那裏onRendered callback是要走的路:我沒有意識到`layout`被處理,就像接着又模板

Template.layout.onRendered(function() { 
    L.BODY = $('body'); 
    L.PC = $('#page_content', L.BODY); 
});