使用内置的开发者工具首次在IE8后,我发现jQuery是附加属性,以我的一些要素: alt text http://thebe.jtan.com/~vince/stack/jquery.PNGjQuery的属性自动添加到元素
我以前从来没有注意到这一点。事实上,这并没有出现在Firebug中......我只在IE8开发者工具中第一次看到它。有谁知道jQuery使用这个为什么,为什么它隐藏在萤火虫?
使用内置的开发者工具首次在IE8后,我发现jQuery是附加属性,以我的一些要素: alt text http://thebe.jtan.com/~vince/stack/jquery.PNGjQuery的属性自动添加到元素
我以前从来没有注意到这一点。事实上,这并没有出现在Firebug中......我只在IE8开发者工具中第一次看到它。有谁知道jQuery使用这个为什么,为什么它隐藏在萤火虫?
The jQuery source很容易阅读,你可以看看data
函数在做什么。
总结:
'jQuery'+(+new Date)
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] = {});
事件处理程序被存储在该内部data
对象的events
和handle
性质。
所以,这是使用.data()
使用的HTML这个“EXPANDO”指定属性,在内部的所有属性来存储一键进入jQuery的内部数据缓存。 jQuery事件处理程序也存储在同一个缓存中。分配给expando
的数字值是一个递增计数器,它引用其在jQuery缓存对象中的位置。
我怀疑它隐藏在萤火虫中,因为我也看到了jquery数据对象。
我相信你使用的jQuery或任何插件只是增加了IE浏览器作为修复/解决各种浏览器特定错误/缺点的解决方法。
这不是一个IE修复/解决方法 - 这是jQuery用来附加事件处理程序和其他各种数据。 – gnarf 2010-05-03 20:36:15
jQuery使用此“expando”将数据和事件绑定到对象。它看起来像它与数据和事件缓存一起工作。不过,我很乐意听到更深入的解释。
@大卫默多克 - 我试图更深入的解释 – gnarf 2010-05-03 20:42:01
如果您使用jQuery的.html()方法来查找HTML字符串,请注意,如果该HTML包含任何已注册事件的元素,您可能会获得比您讨价还价更多的元素。
不要依赖.html()来创建格式良好的XML片段。
我的快速解决方案是改变业务秩序。数据发送后,我只是做了我的jQuery事件绑定。然后,鉴于我花费的时间花费了很多时间,但是仍然是一个重要的教训,这是一个艰难的教训。
我猜你正在使用1.3.1,该问题已在更高版本中修复。所以只是更新和概率,你会没事的。
很好的答案,谢谢! – macca1 2010-05-06 15:04:39