data在原生和jquery中的不同表现

首先记录一下,data-* 其中*不能为空和不能含有大写字母。
然后是如何获取data的值。
页面是这么写的:
<a href="#"  id="a" data-test="123">123</a>
1.原生js获取:document.getElementById("a").dataset.test。
2.jq attr()获取
$("#a").attr("data-test")。
3.jq data()获取
$("#a").data("test")。
当然,这个时候三种方法取出来的值都是一样的,全是“123”。
再看赋值,其实也是最容易迷糊的一个。
$(function(){
    console.log($("#a").data("test"));//输出“123”
    $("#a").data("test","456");//此时element中data-test="123"
    console.log($("#a").data("test"));//输出“456”
    var a= document.getElementById("a");
    console.log(a.dataset.test);//输出“123”
    console.log($("#a").data("test"));//输出“456”
    a.dataset.test="456";//此时element中data-test="456"
    $("#a").attr("data-test","789");//此时element中data-test="789"
    console.log($("#a").data("test"));/输出“456”
  });

现在分析一下,原生js和jq的attr()赋值其实是一样的,都会改变dom树,页面中的data-test会改变。而jq的data()辅助其实是赋值给jq对象,而取值的时候取得也是jq对象的,如果jq对象的缓存已经存在,页面的改变并不会改变data(“test”)取出的值。jq对象的改变并不会重构dom树,所以element中的data-test是不会改变的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值