jQuery文档是否准备等待通过Backbone动态注入的html元素?

时间:2016-02-23 16:07:51

标签: javascript jquery backbone.js single-page-application document-ready

我的代码是一个插入SPA的JS模块,其代码我无法控制。此SPA使用Backbone从模板动态加载HTML元素。其中一个元素是我在代码中需要的div。我在jQuery的文档准备中寻找它..

$(document).ready(function() {
    if($( "#myDivId" )[0] != undefined) {
      console.debug("Found it");
   } else {
      console.debug("D'OH!");
   }
});

有时我会发现div而其他时候我没有。这让我相信DOM ready并不总是等待Backbone。你能证实一下吗?

如果是这种情况,那么是否有其他事件处理程序我可以将代码放在总是找到Backbone的动态插入HTML的地方?

2 个答案:

答案 0 :(得分:0)

回答你的问题:不,文件准备好不等待骨干。我可以证实这一点。

  

还有其他事件处理程序我可以将代码放在总是找到Backbone动态插入HTML的地方吗?

是 - 如果你的视图创建了它自己的元素,就在你将视图添加到DOM之后,你知道它在DOM中。 Backbone没有这样做,你是将它添加到DOM的人,所以你知道你何时这样做。

如果您在DOM中查看现有元素的点,那么该元素已经在DOM中,您可以在视图中执行任何操作。

重点是 - 你是谁控制什么东西被添加到DOM以及何时从DOM查询东西。

答案 1 :(得分:0)

正如Korgrue和其他人所证实的那样,当Backbone完成向DOM插入内容时,不能依赖jQuery ready函数来告诉我,所以Korgrue建议我的解决方案是拥有自己的init()函数Backbone应用程序可以在完成向DOM添加div时调用。这样我就能确定我需要的div总是在那里。