我看到jQueryXXX =“YY”属性添加到我的一些DOM元素中
当我使用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包含jQuery分配的所有元素的所有数据,事件处理程序等.它是通过递增 一些额外的位: 该名称的随机性并非完全随机,jQueryXXXXXXXXXXXXXXXXX为just 你为什么不用.html()?看到它,因为jQuery hides it,它确实是regex to strip it out. 注意:$.expando不会在1.3中公开,只有1.4. 用法: 它有用吗?嗯,它可以是,例如,如果您在控制台中分析$.cache,并且您发现内存泄漏(在许多 $("[" + $.expando + "=312]")[0] //DOM element for this entry 另一个例子,这个: $("#myElem").data('events') //get events object,equivalent to: $.cache[$("#myElem")[0][$.expando]].events 这是一个方便的例子,通常普通的jQuery用户不需要深入了解$.cache或它是如何工作的,但它是存在的,如果你永远不需要去寻找它.只需在您的控制台中运行$.cache,就可能有大量关于您不知道的所有处理程序的信息:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |