在第一次使用内置开发人员工具内置的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] = {});
    

  • 活动处理程序存储在 eventshandle 此内部的属性 data 目的。

因此,在内部使用所有使用的属性 .data() 在HTML上使用此“ Expando”属性,将密钥存储到jQuery的内部数据缓存中。 jQuery事件处理程序也存储在同一缓存中。分配给的数字值 expando 是一个增量计数器,引用其在jQuery缓存对象中的位置。

其他提示

jQuery使用此“ Expando”将数据和事件绑定到对象。看起来它与数据和事件缓存一起工作。不过,我很想听听更深入的解释。

我怀疑它是否隐藏在火焰中,因为我也看到了其中的jQuery数据对象。

我相信,jQuery或您正在使用的任何插件只会在IE中添加它作为各种浏览器特定错误/缺点的修复/解决方法。

如果您使用jQuery的.html()方法查找HTML字符串,请注意,如果HTML包含已注册事件的任何元素,则您可能会收到比讨价还价的更多。

对于良好的XML片段,不要依赖.html()。

我的快速解决方法是改变业务顺序。在发送数据后,我只是进行了jQuery事件的绑定。鉴于我花了很多时间撕开头发,但仍然是一个重要的教训,但仍然很重要。

我猜您正在使用1.3.1,该问题已在以后的版本中解决。因此,只需更新和概率,您就可以了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top