我正在使用IE8和jQuery 1.4.2。我的网页不再正确呈现,并且在HTML的调试器中快速查看每个元素现在都有一个名为“jQuery1279875396122”的新属性,其值是一个小整数,显然对每个节点都是唯一的。
查看jQuery源码我可以看到长号来自(新日期).getTime(),但这是我理解的极限而没有更多的研究。
我不知道这是否与我的渲染问题有关,但我以前从未注意到它,在IE8或任何其他浏览器中。有人可以解释这些属性是什么吗?
答案 0 :(得分:11)
jQuery使用这些“expando”属性来跟踪与元素相关的数据。 jQuery使用其数据API进行事件处理,以及您可能希望绑定到元素的任何常规数据(使用$.data
)。
属性(jQuery1279875396122
)将具有与jQuery.cache
中的位置相关联的值。
jQuery不直接将数据保存到元素(作为常规属性)的原因是为了避免内存泄漏,而且通常不那么突兀。
举个例子,当你将事件处理程序绑定到一个元素时,如下所示:
jQuery('div').click(doSomething);
doSomething
函数将存储在jQuery.cache
中,并且在一个基本级别上,它的位置(或者更确切地说,引用它的对象的位置)将被分配给元素{{1}属性。 jQuery仍将使用浏览器的本机API绑定到元素的事件,但是当它被触发时,jQuery将查找(在jQuery1279875396122
中)并调用正确的处理程序。
编辑:为了清楚起见,这些属性并不值得关注。您应该期望在通过jQuery(包括事件处理程序)绑定任何数据的所有元素上看到它们。如果这是渲染问题的原因,我会非常惊讶。