2013-03-14 77 views
4

在流星文档中,它说Meteor.startup将在DOM和所有模板都被处理后调用。但是,我的代码Meteor.startup的行为就好像DOM元素不在那里一样。流星启动JQuery DOM元素未准备好(JQueryUI拖动)

在.js文件:

Meteor.startup(function() { 
    console.log($('.draggable').length); 
}); 

以html:

<template name="item"> 
    <div class="draggable ui-widget-content"> 
    </div> 
</template> 

在控制台中我看到:

但在我页可以看到我的物品。事实上,如果我将我的JQuery包含在Template.item.renderedmouseover事件中,我会得到正确的数组长度。那么为什么startup函数没有准备好我的DOM元素?

回答

5

我猜你的代码看起来是这样的,但让我知道,如果我错了:

<template name="list"> 
    {{#each items}} 
    {{> item}} 
    {{/each}} 
</template> 

{{#each ...}}助手用光标对象的工作,以对光标数据的变化做出反应。因此,就你而言,如果数据来自服务器(例如订阅),那么在Meteor.startup时,数据可能尚未加载。所以最初你的名单将是空的。然后,当数据从线上传出时,将为每个数据项呈现新的item模板。如果你想让一个特定的项目可拖动,你可以把这个jQuery代码放在Template.item.rendered回调中。

这有帮助吗?

+0

是的,绝对。这就是我最终做的,感谢你,现在我知道解释。 – 2013-03-16 04:15:22