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中。

转载于:https://www.cnblogs.com/moonreplace/archive/2012/11/29/2795108.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值