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实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
Dec 06 jQuery
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
jquery实现拖拽小方块效果
Dec 10 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 CURL获取cookies模拟登录的方法
2013/11/04 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
Python函数的周期性执行实现方法
2016/08/13 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
python循环输出三角形图案的例子
2019/11/22 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
python如何判断IP地址合法性
2020/04/05 Python
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
大学生标准推荐信范文
2013/11/25 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript