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