2012-07-22 161 views
4

我写了一个Chrome的插件,而我听这样的“DOM ready事件”:无法通过jQuery使用document.ready从DOM中访问元素?

$(document).ready(function() { 
    //here I select some elements and remove them. 
}); 

有时我无法得到我想要的元素,即使他们真的存在。但是,当页面加载时,我打开开发人员工具并在控制台中运行相同的代码,然后再次运行。

我很困惑,为什么当DOM准备就绪时我无法获取元素,而且我写的代码是正确的。

+0

采取可能的元素是不可用的DOM准备好了,但后来加入...例如,一个JavaScript函数可以动态生成后DOM准备的内容。 – 2012-07-22 14:16:20

+0

您确定这些元素是否存在并且未被插入为对Ajax调用的响应? – 2012-07-22 14:16:39

回答

5

在DOM准备好之后,您正在寻找的元素的声音正在添加。

尝试换出您的document.ready下面的函数。 (jQuery)提供了两种强大的方法来执行代码和附加事件处理程序:$(document).ready和$(window).load。即使所有图形尚未加载,文档就绪事件也会在加载HTML文档并准备好DOM时执行。如果您想在窗口加载之前将特定元素的事件连接起来,那么$(document).ready就是正确的地方。

窗口加载事件在完整加载完整页面(包括所有框架,对象和图像)后稍后执行。因此,涉及图像或其他页面内容的功能应放置在窗口或内容标签本身的加载事件中。

http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/

+0

感谢您的回答,您是对的,我只是在文档准备就绪时尝试记录html,并且找不到我想要的元素。所以我知道元素稍后添加。 – Dorsey 2012-07-23 12:24:52

3

如果DOM真的准备好了并且元素未被其他代码稍后添加,那么他们将会在处被找到。如果你没有找到它们,这表明你正在使用的选择器有问题,或者说它是由其他代码添加的(而不是在标记中)。