gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:18:03 25 4
gpt4 key购买 nike

我使用的是 IE8 和 jQuery 1.4.2。我的网页不再正确呈现,在 HTML 的调试器中快速查看显示每个元素现在都有一个名为“jQuery1279875396122”的新属性,其值是一个小整数,显然对每个节点都是唯一的。

查看 jQuery 源代码,我可以看到长数字来自 (new Date).getTime(),但这是我理解的限制,没有进行更多研究。

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

最佳答案

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

属性 (jQuery1279875396122) 将有一个与 jQuery.cache 中的位置关联的值。

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


举个例子,当你将一个事件处理程序绑定(bind)到一个元素时,像这样:

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

doSomething 函数将存储在 jQuery.cache 中,并且在基本级别上,它的位置(或者更确切地说,引用它的对象的位置)将分配给元素的 jQuery1279875396122 属性。 jQuery 仍将使用浏览器的 native API 绑定(bind)到元素的事件,但当它被触发时,jQuery 将查找(在 jQuery.cache 中)并调用正确的处理程序。

编辑: 需要说明的是,这些属性无需担心。您应该期望在所有通过 jQuery(包括事件处理程序)绑定(bind)任何数据的元素上看到它们。如果这是导致渲染问题的原因,我会感到非常惊讶。

关于jQuery 正在向节点添加一个奇怪的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com