jQuery _data解析

jQuery Data,我们可以给一个html element, 或者是一个js object,来增加一个data 属性,我们可以像其他属性那样来读取,修改.而隐藏在其后面的是jQuery._data() 在起作用。

实现步骤:

  1. 首先确定那些html object不能实现data,如果我们来给它们添加属性会引起错误,

noData: {

            "embed": true,

            // Ban all objects except for Flash (which handle expandos)

            "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",

            "applet": true

  },

唯一需要注意的是在object中,flash可以存数据。jQuery.acceptData(elem)用来完成这件事情。

  1. jQuery.expando是一个属性,当我们页面有多个jQuery的情况下,我们可以用这个来区分那个jquery来给object添加的data. 这样,我们可以解决IE6,IE7内存泄露的问题,我们可以用它来存储一系列的element,最后来实现清除。
  2. 我们只需要缓存一些html object, 因为js object,可以自动内存回收的。

 cache = isNode? jQuery.cache: elem;

  1. 在读数据的时候,首先看当前element,有没有过被加上data,如果没有,则直接返回
  2. 对于每一个jQuery element,我们还得给它们不同的id来标识这些element

if (isNode) {

                          elem[internalKey] = id = jQuery.deletedIds.pop() || jQuery.guid++;

                } else {

                    id = internalKey;

                }

  1. 如果pvt为true,那么它们会把数据存储在cache[id]中,如果为false,那么它们会存储在cahce[id].data中。

你可能感兴趣的:(jquery)