在第一次使用开发者工具中使用IE8之后,我注意到jQuery正在附加一些元素的属性:
alt text http://thebe.jtan.com/~vince/stack/jquery.PNG
alt text http://thebe.jtan.com/~vince/stack/jquery.PNG
我从来没有注意过这个.事实上,这并没有出现在Firebug …我只是第一次看到它在IE8开发工具.有没有人知道jQuery是否使用这个,为什么它隐藏在firebug中?
解决方法
The jQuery source很容易阅读,你可以看看数据功能在做什么.
总结:
> jQuery有一个名为’expando’的变量是’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] = {});
>事件处理程序存储在该内部数据对象的事件和句柄属性中.
因此,内部使用.data()
分配的所有属性都使用HTML上的“expando”属性将密钥存储到jQuery的内部数据缓存中. jQuery事件处理程序也存储在同一个缓存中.分配给expando的数值是一个增量计数器,它引用其在jQuery缓存对象中的位置.