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弹幕效果
May 06 jQuery
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
jQuery validata插件实现方法
Jun 25 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 jQuery
jQuery轮播图实例详解
Aug 15 jQuery
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 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
Smarty变量调节器失效的解决办法
2014/08/20 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
小程序实现多选框功能
2018/10/30 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python实现简单socket通信的方法
2016/04/19 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python pygame模块编写飞机大战
2018/11/20 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
django 读取图片到页面实例
2020/03/27 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
python与pycharm有何区别
2020/07/01 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
判断单链表中是否存在环
2012/07/16 面试题
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
大学生四年生活自我鉴定
2013/11/21 职场文书
九九重阳节标语
2014/10/07 职场文书
会计工作总结范文2014
2014/12/23 职场文书
升学宴答谢词
2015/01/05 职场文书
本溪水洞导游词
2015/02/11 职场文书
会计岗位职责范本
2015/04/02 职场文书
七年级作文之雪景
2019/11/18 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技