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

前端之家收集整理的这篇文章主要介绍了jQuery正在向节点添加一个奇怪的属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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(包括事件处理程序)绑定任何数据的所有元素上看到它们.如果这是渲染问题的原因,我会非常惊讶.

猜你在找的jQuery相关文章