jqery中无法通过 .data(key,value)方法来设置 data-*的属性

https://segmentfault.com/q/1010000004959330

误解了data的用法, 试着看看jquery的源码中data的封装:data

很明显的表明$(element).data(); 是需要html标签中已经存在如这样的<div data-name="xxx"></div>,所以题主找不到比较正常。

一般操作的时候,都会在html标签中添加data-name="value",然后再通过jquery去修改


jquery的data方法并不会向attr属性一样,可以直接修改dom的属性。

$("div").attr("data-name","haha")

通过jquery源码可以得知,jquery把属性为data-*的html标签获取到,并取到data-*的value值,放在cache缓存里面,其实质改动的只是data数据而已。并不会修改dom属性。

<div data-name="value"> div's value </div>

$("div").data("name");   // 得到值 value

$("div").data("name","haha");   //改变data值,此时只是在cache里面改变而已,其实质上并没有修改data-name中的value。

// 此时仍然是 <div data-name="value"> div's value </div>, 但通过data获取的值就不是标签中的值了。

$("div").data("name");    //此时得到的值 是haha

//包括之后移除了data-name
$("div").removeAttr("data-name")   // 结果为: [<div>​…​</div>​]

//此时获取
$("div").data("name")  //值依然存在  haha

jQuery的data()方法只是作为数据的一种存取而已.并不修改Dom属性

如果想改变data-name中的值,建议直接用

$("div").attr("data-name","hahaha");

// <div data-name="hahaha"> div's value </div>

另外添加属性,不能通过data的方法,只能通过

$("div").attr("data-name1","value1");
//<div data-name1="value1" data-name="value"></div>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值