加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

我看到jQueryXXX =“YY”属性添加到我的一些DOM元素中

发布时间:2020-12-14 16:40:25 所属栏目:资源 来源:网络整理
导读:当我使用IE开发人员工具时,一些DOM元素添加了属于该形式的属性 jQueryXXXXXXXXX = “YY” 其中XXXXX是一个相当长的数字字符串,YY通常是一个小整数值. 我没有在Safari上使用DOM检查器看到这些. 这些为什么以及何时添加?这些数据对我有用吗? 解决方法 这是jQ
当我使用IE开发人员工具时,一些DOM元素添加了属于该形式的属性
jQueryXXXXXXXXX = “YY”
其中XXXXX是一个相当长的数字字符串,YY通常是一个小整数值.

我没有在Safari上使用DOM检查器看到这些.

这些为什么以及何时添加?这些数据对我有用吗?

解决方法

这是jQuery expando attribute,它是用于在$.cache中找到它的条目的对象的关键. $.cache用于 .data(),事件处理程序或任何你想要留在那里的东西,它是一个集中的地方来存储事件(使得全局事件更容易/更高效)和一个清理的地方.通过只携带元素上的属性,没有必要在每个元素上都有一个数据存储,它可能无法正确克隆 – 跨浏览器,而只是维护这个键,并且可以在任何时候在$.cache对象中查找它的条目.

我们来举个例子:

domElement[$.expando] //only works in 1.4+,expando was private previously

这将给出“ID”或类别的键,该键对应于存储该元素的数据/事件的$.cache对象上的属性(如果它具有任何数据/事件处理程序).例如,如果密钥是“4”,它将在内部用于访问$.cache [4].

$.cache包含jQuery分配的所有元素的所有数据,事件处理程序等.它是通过递增$.uuid(一个内部的攀爬ID jquery分配并在每个新对象添加到$.cache中时递增)来分配的.

一些额外的位:

该名称的随机性并非完全随机,jQueryXXXXXXXXXXXXXXXXX为just jQuery + the timestamp then jquery was loaded,为该属性提供一个独特的希望非碰撞名称.

你为什么不用.html()?看到它,因为jQuery hides it,它确实是regex to strip it out.

注意:$.expando不会在1.3中公开,只有1.4.

用法:

它有用吗?嗯,它可以是,例如,如果您在控制台中分析$.cache,并且您发现内存泄漏(在许多.load()调用之前没有.empty(),例如留下事件处理程序).你打开你的控制台,做$.cache,你看到500个条目,假设你想知道哪个对象有312,那么你可以选择它,如下所示:

$("[" + $.expando + "=312]")[0] //DOM element for this entry

另一个例子,这个:

$("#myElem").data('events') //get events object,equivalent to:
$.cache[$("#myElem")[0][$.expando]].events

这是一个方便的例子,通常普通的jQuery用户不需要深入了解$.cache或它是如何工作的,但它是存在的,如果你永远不需要去寻找它.只需在您的控制台中运行$.cache,就可能有大量关于您不知道的所有处理程序的信息:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读