jQuery 文档准备好等待通过 Backbone 动态注入的 html 元素吗?
Will jQuery document ready wait for html elements injected dynamically through Backbone?
我的代码是一个 JS 模块,它被插入到我无法控制其代码的 SPA 中。此 SPA 使用 Backbone 从模板动态加载 HTML 元素。其中一个元素是我在代码中需要的 div 。我正在 jQuery 的文档中寻找它 ready..
$(document).ready(function() {
if($( "#myDivId" )[0] != undefined) {
console.debug("Found it");
} else {
console.debug("D'OH!");
}
});
有时我发现 div 有时我没有。这让我相信 DOM 准备好并不总是等待 Backbone。你能确认一下吗?
如果是这样的话,还有其他事件处理程序吗?我可以将我的代码放在它总是找到 Backbone 动态插入 HTML 的地方?
回答您的问题:不,文档准备好不会等待 backbone。我可以确认这一点。
are there any other event handlers I can place my code where it always find Backbone's dynamically inserted HTML?
是 - 如果您的视图创建了它自己的元素,在您将视图添加到 DOM 之后,您知道它在 DOM 中。 Backbone 不这样做,您是将它添加到 DOM 的人,所以您知道何时执行。
如果您查看指向 DOM 中的现有元素,那么该元素已经在 DOM 中,您可以在视图中执行任何操作。
所以重点是 - 由您来控制何时将内容添加到 DOM 以及何时从 DOM 查询内容。
正如 Korgrue 和其他人所证实的那样,jQuery ready 函数不能依赖于告诉我什么时候 Backbone 完成了向 DOM 中插入东西,所以也正如建议的那样Korgrue 我的解决方案是拥有我自己的 init() 函数,Backbone 应用程序可以在完成向 DOM 添加 div 时调用该函数。这样我就可以确定我需要的 div 永远在那里。
我的代码是一个 JS 模块,它被插入到我无法控制其代码的 SPA 中。此 SPA 使用 Backbone 从模板动态加载 HTML 元素。其中一个元素是我在代码中需要的 div 。我正在 jQuery 的文档中寻找它 ready..
$(document).ready(function() {
if($( "#myDivId" )[0] != undefined) {
console.debug("Found it");
} else {
console.debug("D'OH!");
}
});
有时我发现 div 有时我没有。这让我相信 DOM 准备好并不总是等待 Backbone。你能确认一下吗?
如果是这样的话,还有其他事件处理程序吗?我可以将我的代码放在它总是找到 Backbone 动态插入 HTML 的地方?
回答您的问题:不,文档准备好不会等待 backbone。我可以确认这一点。
are there any other event handlers I can place my code where it always find Backbone's dynamically inserted HTML?
是 - 如果您的视图创建了它自己的元素,在您将视图添加到 DOM 之后,您知道它在 DOM 中。 Backbone 不这样做,您是将它添加到 DOM 的人,所以您知道何时执行。
如果您查看指向 DOM 中的现有元素,那么该元素已经在 DOM 中,您可以在视图中执行任何操作。
所以重点是 - 由您来控制何时将内容添加到 DOM 以及何时从 DOM 查询内容。
正如 Korgrue 和其他人所证实的那样,jQuery ready 函数不能依赖于告诉我什么时候 Backbone 完成了向 DOM 中插入东西,所以也正如建议的那样Korgrue 我的解决方案是拥有我自己的 init() 函数,Backbone 应用程序可以在完成向 DOM 添加 div 时调用该函数。这样我就可以确定我需要的 div 永远在那里。