jQuery中.attr()和.data()的区别分析


Posted in jQuery onSeptember 03, 2017

$.attr()和$.data()本质上属于 DOM属性 和 Jquery对象属性 的区别。

Jquery对象属性和DOM属性

一个简单的例子

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Jquery中.attr和.data的区别</title>
  </head>
  <body>
    <p id="app" data-foo="hello"></p>
  </body>
  <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
  <script type="text/javascript">
    var getAttr1 = $('#app').attr('data-foo');
    var getData1 = $('#app').data('foo');
    console.log('getAttr1: ' + getAttr1); //hello
    console.log('getData1: ' + getData1); //hello
    $('#app').attr('data-foo', 'world'); //$.attr 设置DOM元素属性值
    var getAttr2 = $('#app').attr('data-foo');
    var getData2 = $('#app').data('foo');
    console.log('getAttr2: ' + getAttr2); //world
    console.log('getData2: ' + getData2); //*** hello ***
    $('#app').data('foo', 'WORLD'); //$.data 设置DOM node属性值
    var getAttr3 = $('#app').attr('data-foo');
    var getData3 = $('#app').data('foo');
    console.log('getAttr3: ' + getAttr3); //world
    console.log('getData3: ' + getData3); //*** WORLD ***
  </script>
</html>

• $.attr()每次都从DOM 元素 中取属性的值,即和视图中标签内的属性值保持一致。 •$.attr('data-foo')会从标签内获得data-foo属性值;

•$.attr('data-foo', 'world')会将字符串'world'塞到标签的'data-foo'属性中;

•$.data()是从 Jquery对象 中取值,由于对象属性值保存在内存中,因此可能和视图里的属性值不一致的情况。 •$.data('foo')会从 Jquery对象 内获得foo的属性值,不是从标签内获得data-foo属性值;

•$.data('foo', 'world')会将字符串'world'塞到 Jquery对象 的'foo'属性中,而不是塞到视图标签的data-foo属性中。

结合上面代码和解释,大家应该能够理解两者的区别。

小结

所以$.attr()和$.data()应避免混合用,也就是应该尽量避免如下两种情况的出现:

1.通过$.attr()来进行set属性,然后通过$.data()进行get属性值;

2.通过$.data()来进行set属性,然后通过$.attr()进行get属性值。

同时从性能的角度来说,建议使用$.data()来进行set和get操作,因为它仅仅修改的 Jquey对象 的属性值,不会引起额外的DOM操作。

以上所述是小编给大家介绍的jQuery中.attr()和.data()的区别分析,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

jQuery 相关文章推荐
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
JQuery实现定时刷新功能代码
May 09 jQuery
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 jQuery
jquery使用FormData实现异步上传文件
Oct 25 jQuery
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
jQuery实现简单日历效果
Jul 05 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 #jQuery
jquery tmpl模板(实例讲解)
Sep 02 #jQuery
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 #jQuery
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 #jQuery
jquery操作ul的一些操作笔记整理(干货)
Aug 31 #jQuery
jquery插件开发之选项卡制作详解
Aug 30 #jQuery
基于jQuery的左滑出现删除按钮的示例
Aug 29 #jQuery
You might like
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
小谈php正则提取图片地址
2014/03/27 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
windows下安装nodejs及框架express
2015/08/07 NodeJs
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python模拟简单电梯调度算法示例
2018/08/20 Python
python树的同构学习笔记
2019/09/14 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
python asyncio 协程库的使用
2021/01/21 Python
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
档案室主任岗位职责
2014/02/12 职场文书
先进集体事迹材料
2014/02/17 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
岗位明星事迹材料
2014/05/18 职场文书
运动会加油稿100字
2014/09/19 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
综合测评个人总结
2015/03/03 职场文书
海上钢琴师观后感
2015/06/03 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
小程序自定义轮播图圆点组件
2022/06/25 Javascript