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实现分页功能(含ajax请求、后台数据、附完整demo)
Apr 03 jQuery
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
使用jQuery实现购物车结算功能
Aug 15 jQuery
解决jquery appaend元素中id绑定事件失效的问题
Sep 12 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
jQuery利用FormData上传文件实现批量上传
Dec 04 jQuery
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
jquery实现垂直手风琴菜单
Mar 04 jQuery
jQuery HTML css()方法与css类实例详解
May 20 jQuery
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 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的ASP防火墙
2006/10/09 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
webpack 样式加载的实现原理
2018/06/12 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
浅析python协程相关概念
2018/01/20 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
tensorflow自定义激活函数实例
2020/02/04 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
联强国际笔试题面试题
2013/07/10 面试题
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
校运会口号
2014/06/18 职场文书
2014年电厂工作总结
2014/12/04 职场文书
赔偿协议书
2015/01/27 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
教师远程培训心得体会
2016/01/09 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS