.attr()与.data()的区别

  今天在做一个功能时,用到了利用attr记录暂时的值,还是按照之前的一惯做法,attr赋值,data取值,但是!失灵了!

然后,调试发现,之前都是在页面初始化时,标签已有attr属性,此时用$.data()是可以获取到,但是,当再次$.attr()赋值后,就不可以了。

经搜索及调试及验证后,发现,原因如下:

1.attr属性是必须写在html标签上,它属于dom属性,而data是储存于jquery对象模型上,它属于jquery对象属性,因此,它俩本质不一样;

2.attr的运行机制是:$.attr()取值和赋值都是找到html标签,直接操作该标签的属性;

3.data的运行机制是:页面第一次解析时,会将dom节点的attribute值存放到内存中, $.data()取值和赋值都是直接操作这个内存值,而不是dom元素;

综上所述:

1.避免attr和data的混合使用,以免因为数据不一样,产生bug;

2.attr赋值就用attr取值;

3.data赋值就用data取值。

 

 

 
 

 

转载于:https://www.cnblogs.com/lichunyan/p/8213753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值