Meteor Startup JQuery DOM Elements Not Ready (JQueryUI Draggable)

Posted

技术标签:

【中文标题】Meteor Startup JQuery DOM Elements Not Ready (JQueryUI Draggable)【英文标题】: 【发布时间】:2013-03-02 09:14:44 【问题描述】:

在 Meteor 文档中,它说 Meteor.startup 将在 DOM 并且所有模板都已处理后被调用。但是,我在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】:

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

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

#each ... 助手使用游标对象来响应游标上的数据更改。因此,在您的情况下,如果该数据来自服务器(例如订阅),则在 Meteor.startup 时,数据可能尚未加载。因此,最初您的列表将为空。然后,随着数据的传输,将为每个数据项呈现一个新的item 模板。如果您想让特定项目可拖动,您可以将该 jQuery 代码放在 Template.item.rendered 回调中。

这有帮助吗?

【讨论】:

是的,当然。这就是我最终所做的,感谢你,现在我知道了解释。

以上是关于Meteor Startup JQuery DOM Elements Not Ready (JQueryUI Draggable)的主要内容,如果未能解决你的问题,请参考以下文章

Meteor 渲染回调和应用 jQuery 插件

什么相当于 Storybook 中的 Meteor.startup

Meteor - 新 DOM 元素上的事件 [重复]

Meteor.js 中更新 DOM 后的回调

Meteor+React 错误:未捕获的不变违规:_registerComponent(...):目标容器不是 DOM 元素

表单提交后 Jquery.validate() 不“重新加载”(meteor.js)