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.load()和Jsp的include的区别
Apr 12 jQuery
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
jquery中有哪些api jQuery主要API
Nov 20 jQuery
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
jQuery 实现批量提交表格多行数据的方法
Aug 09 jQuery
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
基于jQuery实现可编辑的表格
Dec 11 jQuery
jQuery实现的解析本地 XML 文档操作示例
Apr 30 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
php 设计模式之 单例模式
2008/12/19 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
python SocketServer源码深入解读
2019/09/17 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
促销活动总结范文
2014/04/30 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
2015年公司新年寄语
2014/12/08 职场文书
小学生成绩单评语
2014/12/31 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
Python基础之字符串格式化详解
2021/04/21 Python
python 批量压缩图片的脚本
2021/06/02 Python