jQuery正在向节点添加一个奇怪的属性

时间:2010-07-23 09:37:27

标签: jquery html internet-explorer-8

我正在使用IE8和jQuery 1.4.2。我的网页不再正确呈现,并且在HTML的调试器中快速查看每个元素现在都有一个名为“jQuery1279875396122”的新属性,其值是一个小整数,显然对每个节点都是唯一的。

查看jQuery源码我可以看到长号来自(新日期).getTime(),但这是我理解的极限而没有更多的研究。

我不知道这是否与我的渲染问题有关,但我以前从未注意到它,在IE8或任何其他浏览器中。有人可以解释这些属性是什么吗?

1 个答案:

答案 0 :(得分:11)

jQuery使用这些“expando”属性来跟踪与元素相关的数据。 jQuery使用其数据API进行事件处理,以及您可能希望绑定到元素的任何常规数据(使用$.data)。

属性(jQuery1279875396122)将具有与jQuery.cache中的位置相关联的值。

jQuery不直接将数据保存到元素(作为常规属性)的原因是为了避免内存泄漏,而且通常不那么突兀。


举个例子,当你将事件处理程序绑定到一个元素时,如下所示:

jQuery('div').click(doSomething);

doSomething函数将存储在jQuery.cache中,并且在一个基本级别上,它的位置(或者更确切地说,引用它的对象的位置)将被分配给元素{{1}属性。 jQuery仍将使用浏览器的本机API绑定到元素的事件,但是当它被触发时,jQuery将查找(在jQuery1279875396122中)并调用正确的处理程序。

编辑:为了清楚起见,这些属性并不值得关注。您应该期望在通过jQuery(包括事件处理程序)绑定任何数据的所有元素上看到它们。如果这是渲染问题的原因,我会非常惊讶。