javascript - Meteor Startup JQuery DOM 元素未就绪(JQueryUI 可拖动)

标签 javascript jquery templates meteor startup

在 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 元素准备好使用呢?

最佳答案

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

<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/

相关文章:

javascript - CodeIgniter - AJAX 生成元素内的 AJAX 分页

jQuery .click 不起作用

c++ - 不完整类型的调用运算符的 decltype 的特殊行为

C++ 模板类特化和结构

javascript - Ember.js - 在所有转换时运行与 View 相关的 JS,而不仅仅是在模型更改时

javascript - Three.js 将对象补间到相机前面

javascript - LABjs : How to append the scripts to the end of the body tag

c++ - 为什么我不能使用作为模板类的父类的变量?

javascript - jQuery删除textarea中的img但保留alt属性并删除所有div

javascript - 如何将 <label> 和普通文本与 Kendo UI 对齐?