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.rendered
或mouseover
事件中包含我的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)的主要内容,如果未能解决你的问题,请参考以下文章
什么相当于 Storybook 中的 Meteor.startup
Meteor+React 错误:未捕获的不变违规:_registerComponent(...):目标容器不是 DOM 元素