jQuery document.ready已激活但未找到元素

时间:2011-02-13 10:06:15

标签: javascript jquery firefox

我遇到的问题只发生在特定的计算机上(FFX 3.6.13,Windows 7,jQuery 1.4.3)。 有时会触发document.ready,但在尝试获取附加事件处理程序的元素时,元素不存在!

代码如下:

$(function(){
   window.initStart = true;
   $("#id_of_element").click(function()...);
   window.initEnd = $("#id_of_element");
});

window.initStart / End用于调试,有时这个代码运行得很好,但有时window.initEnd只是一个空的jQuery集(长度== 0)。 这意味着document.ready总是被触发,但有时会在元素可用之前触发

有人有这个问题吗?问题是什么?

2 个答案:

答案 0 :(得分:1)

你可以尝试解决这个问题的一种方法是使用.live而不是.click。以下代码

$('#idOfDiv').live('click', function() { doStuff(); });

将输入函数附加到页面上删除的所有内容的Click事件,其id为“idOfDiv”,只要它进入页面即可。虽然.click立即执行,但无论div在什么时候进入页面都应该附加。

干杯

答案 1 :(得分:0)

有一个article on SitePoint演示了如何判断某些dom元素何时可用。

此外,我知道这是一个特定于版本的问题,但如果您使用的是Jquery 1.5,那么deferred objects的内容在这里会很有用。