Javascript 布局呈现后如何初始化jQuery对象?

Javascript 布局呈现后如何初始化jQuery对象?,javascript,jquery,meteor,Javascript,Jquery,Meteor,我想定义几个变量,稍后在我的应用程序布局呈现之后,我将使用这些变量来确定jQuery选择器的范围 我试图用以下方式来定义它们: Meteor.startup(function () { /* Define variables */ }) 但它不起作用,物体是空的 以下是我如何声明我的应用程序布局: Router.configure({ layoutTemplate: 'layout' }); 以下是布局本身: <template name="layout"> <di

我想定义几个变量,稍后在我的应用程序布局呈现之后,我将使用这些变量来确定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
显示在我尝试声明这些变量时,应用程序的主体仍然是空的


一旦呈现了应用程序的布局,我如何定义jQuery对象?

layout
只是另一个模板。jQuery需要DOM元素存在才能从中创建对象

接下来的路是:

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

我没有意识到
layout
当时被当作另一个模板处理。非常感谢你的帮助!如果您需要在执行任何JQuery之前保证DOM元素存在,那么这个问题和我的答案可能会很有趣@Kassymorsel是的,这很接近,但主题不同(每个迭代都是
),在这里不太适用。
Template.layout.onRendered(function() {
  L.BODY = $('body');
  L.PC   = $('#page_content', L.BODY);
});