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