代码之家  ›  专栏  ›  技术社区  ›  Charles Anderson

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

  •  6
  • Charles Anderson  · 技术社区  · 14 年前

    我使用的是IE8和jquery 1.4.2。我的网页呈现不再正确,快速查看HTML中的调试器可以发现每个元素现在都有一个新的属性“jquery1279875396122”,它的值是一个小整数,显然每个节点都是唯一的。

    查看jquery源代码,我可以看到长的数字来自(new date).gettime(),但这是我理解的极限,不需要更多的研究。

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

    1 回复  |  直到 14 年前
        1
  •  11
  •   James    14 年前

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

    财产( jQuery1279875396122 )将具有与中的位置关联的值 jQuery.cache .

    jquery不直接将数据保存到元素中(作为常规属性)的原因是为了避免内存泄漏,并且通常不那么引人注目。


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

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

    这个 doSomething 函数将存储在 高速缓存 并且,在基本级别上,它的位置(或者更确切地说,引用它的对象的位置)将被分配给元素的 查询1279875396122 财产。jquery仍将使用浏览器的本机API绑定到元素的事件,但当它被激发时,jquery将查找(在 高速缓存 )并调用正确的处理程序。

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