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