流星启动JQuery DOM元素未准备好(JQueryUI Draggable)

Meteor Startup JQuery DOM Elements Not Ready (JQueryUI Draggable)

本文关键字:JQueryUI Draggable 准备好 未准备 启动 JQuery DOM 元素 流星      更新时间:2023-09-26

在Meteor文档中,它说Meteor.startup将在DOM和所有模板被处理后被调用。但是,我在Meteor.startup中的代码表现得好像DOM元素不存在。

In .js:

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

:

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

在控制台中我看到:

0

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

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

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

{{#each ...}}助手使用游标对象来响应游标上的数据更改。因此,在您的情况下,如果数据来自服务器(例如订阅),在流星的时候。启动时,数据可能尚未加载。所以一开始你的列表是空的。然后,当数据从网络传出时,将为每个数据项呈现一个新的item模板。如果你想让一个特定的项目可拖动,你可以把jQuery代码放在Template.item.rendered回调中。

这有帮助吗?