流星启动JQuery DOM元素未就绪(JQueryUI Draggable)

时间:2013-03-14 05:56:02

标签: javascript jquery templates meteor startup

在Meteor文档中,它表示将在DOM之后调用Meteor.startup并且所有模板都已处理完毕。但是,Meteor.startup中的代码就像DOM元素不在那里一样。

在.js:

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

在.html:

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

在控制台中我看到:

  

0

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

1 个答案:

答案 0 :(得分:5)

我猜你的代码看起来像这样,但如果我错了就告诉我:

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

{{#each ...}}帮助程序使用游标对象来响应游标上的数据更改。因此,在您的情况下,如果该数据来自服务器(例如订阅),则在Meteor.startup时,数据可能尚未加载。所以最初你的清单是空的。然后,当数据从线上传出时,将为每个数据项呈现新的item模板。如果你想让一个特定的项目可拖动,你可以把这个jQuery代码放在Template.item.rendered回调中。

这有帮助吗?