7

我写了一个 Chrome 插件,我正在听这样的“DOM 就绪事件”:

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

有时我无法得到我想要的元素,即使它们真的存在。但是当页面被加载时,我打开开发者工具并在控制台中运行相同的代码,它又可以工作了。

我很困惑为什么我在 DOM 准备好时无法获取元素,而我编写的代码是正确的。

4

2 回答 2

10

听起来您正在寻找的元素是在 DOM 准备好后添加的。

尝试换掉你的文档。准备好下面的功能。

$(window).load(function() {
 // executes when complete page is fully loaded, including all frames, objects and images
 alert("window is loaded");
});

jQuery 提供了两种强大的方法来执行代码和附加事件处理程序:$(document).ready 和 $(window).load。当 HTML 文档被加载并且 DOM 准备就绪时,文档就绪事件已经执行,即使所有的图形还没有加载。如果您想在窗口加载之前为某些元素连接事件,那么 $(document).ready 是正确的地方。

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

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

于 2012-07-23T11:04:37.317 回答
4

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

于 2012-07-22T14:16:17.403 回答