2015-09-13 3 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

Я не понял, 'layout' обрабатывают так же, как другой шаблон затем. Большое спасибо за вашу помощь! –

+0

Этот вопрос и мой ответ могут представлять интерес, если вам нужно гарантировать, что элементы DOM присутствуют, прежде чем делать какие-либо материалы JQuery. 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 это путь:

Template.layout.onRendered(function() { 
    L.BODY = $('body'); 
    L.PC = $('#page_content', L.BODY); 
}); 
Смежные вопросы