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

Ben*_*row 4 javascript jquery templates startup meteor

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

在.js:

Meteor.startup(function () {
  console.log($('.draggable').length);
});
Run Code Online (Sandbox Code Playgroud)

在.html中:

<template name="item">
  <div class="draggable ui-widget-content">
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

在控制台中我看到:

0

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

cma*_*her 5

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

<template name="list">
  {{#each items}}
    {{> item}}
  {{/each}}
</template>
Run Code Online (Sandbox Code Playgroud)

该{{#each ...}}助手与游标对象的工作,以对光标数据的变化做出反应.因此,在您的情况下,如果该数据来自服务器(例如订阅),则在Meteor.startup时,数据可能尚未加载.所以最初你的清单是空的.然后,当数据从线上item传出时,将为每个数据项呈现新模板.如果要使特定项可拖动,可以将该jQuery代码放入Template.item.rendered回调中.

这有帮助吗?