在 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 元素准备好使用呢?
最佳答案
我猜你的代码看起来像这样,但如果我错了请告诉我:
<template name="list">
{{#each items}}
{{> item}}
{{/each}}
</template>
{{#each ...}}
帮助器与游标对象一起工作以响应游标上的数据更改。因此,在您的情况下,如果该数据来自服务器(例如订阅),则在 Meteor.startup 时,数据可能尚未加载。所以最初你的列表是空的。然后,当数据从网络中传出时,将为每个数据项呈现一个新的 item
模板。如果您想使特定项目可拖动,您可以将该 jQuery 代码放入 Template.item.rendered
回调中。
这有帮助吗?
关于javascript - Meteor Startup JQuery DOM 元素未就绪(JQueryUI 可拖动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15402211/