我写了一个Chrome插件,我正在听这样的"DOM就绪事件":
$(document).ready(function () {
//here I select some elements and remove them.
});
有时我无法得到我想要的元素,即使它们真的存在。但当页面加载后,我打开开发人员工具,在控制台中运行相同的代码,它就会再次工作。
我很困惑为什么我不能在DOM准备好并且我编写的代码是正确的情况下获得元素。
听起来您要查找的元素是在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/
如果DOM真的准备好了,并且其他代码稍后没有添加元素,那么它们就会在那里。如果你没有找到它们,这表明你正在使用的选择器有问题,或者表明它们是由其他代码添加的(而不是在标记中)。