jQuery属性自动添加到元素中
-
02-10-2019 - |
题
在第一次使用内置开发人员工具内置的IE8之后,我注意到jQuery将属性附加到我的某些元素上:Alt Text http://thebe.jtan.com/~vince/stack/jquery.png
我以前从未注意到这一点。实际上,这并不是在Firebug中出现的...我现在仅在IE8开发人员工具中首次看到它。有谁知道jQuery使用它的方法,以及为什么它隐藏在燃烧中?
解决方案
jQuery来源 很容易阅读,您可以查看 data
功能正在做。
总结:
- jQuery有一个称为“ Explivo”的变量
'jQuery'+(+new Date)
- jQuery有另一个变量称为
uuid
从“ 1”开始 jQuery.cache
是一个空的对象在HTML元素/对象上设置/获取任何“数据”将使用
expando
对象上的属性将参考存储到jQuery.cache
- 有点这样:// get the elements cache id, or create a new cache id: var id = elem[expando] || (elem[expando] = uuid++); // get the cache for the element, or create it: var data = jQuery.cache[id] || (jQuery.cache[id] = {});
活动处理程序存储在
events
和handle
此内部的属性data
目的。
因此,在内部使用所有使用的属性 .data()
在HTML上使用此“ Expando”属性,将密钥存储到jQuery的内部数据缓存中。 jQuery事件处理程序也存储在同一缓存中。分配给的数字值 expando
是一个增量计数器,引用其在jQuery缓存对象中的位置。
其他提示
jQuery使用此“ Expando”将数据和事件绑定到对象。看起来它与数据和事件缓存一起工作。不过,我很想听听更深入的解释。
我怀疑它是否隐藏在火焰中,因为我也看到了其中的jQuery数据对象。
我相信,jQuery或您正在使用的任何插件只会在IE中添加它作为各种浏览器特定错误/缺点的修复/解决方法。
如果您使用jQuery的.html()方法查找HTML字符串,请注意,如果HTML包含已注册事件的任何元素,则您可能会收到比讨价还价的更多。
对于良好的XML片段,不要依赖.html()。
我的快速解决方法是改变业务顺序。在发送数据后,我只是进行了jQuery事件的绑定。鉴于我花了很多时间撕开头发,但仍然是一个重要的教训,但仍然很重要。
我猜您正在使用1.3.1,该问题已在以后的版本中解决。因此,只需更新和概率,您就可以了。