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

 更新时间:2017年09月03日 11:34:52   投稿:mrr  
$.attr()和$.data()本质上属于 DOM属性 和 Jquery对象属性 的区别。下面通过一个示例给大家介绍jQuery中.attr()和.data()的区别,一起看看吧

$.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.mousewheel实现整屏翻屏效果

    jquery.mousewheel实现整屏翻屏效果

    jQuery Mousewheel 用于添加跨浏览器的鼠标滚轮支持。 mousewheel事件的处理函数有一点小小的变化,它除了第一个参数event 外,还接收到第二个参数delta。通过参数delta可以获取鼠标滚轮的方向和速度。
    2015-08-08
  • 最常见的左侧分类菜单栏jQuery实现代码

    最常见的左侧分类菜单栏jQuery实现代码

    这篇文章主要为大家详细介绍了最常见的左侧分类菜单栏jQuery实现代码,仿京东、淘宝等各大类网站效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • JQuery开发的数独游戏代码

    JQuery开发的数独游戏代码

    08年的时候装上ubuntu试用了一下,发现里面自带了一个数独游戏,索性自己用jquery做了一个数独游戏。
    2010-10-10
  • jQuery实现条件搜索查询、实时取值及升降序排序的方法分析

    jQuery实现条件搜索查询、实时取值及升降序排序的方法分析

    这篇文章主要介绍了jQuery实现条件搜索查询、实时取值及升降序排序的方法,结合实例形式分析了jQuery针对页面元素属性操作相关实现技巧,需要的朋友可以参考下
    2019-05-05
  • jquery插件之easing使用

    jquery插件之easing使用

    很简单的一个效果插件,但不是经常用,怕忘了,以后在用又要去看文档,所以现在把笔记写下来,方便以后
    2010-08-08
  • Jquery中offset()和position()的区别分析

    Jquery中offset()和position()的区别分析

    这篇文章主要介绍了Jquery中offset()和position()的区别,实例分析了offset()与position()的使用的技巧与区别,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Easyui Treegrid改变默认图标的方法

    Easyui Treegrid改变默认图标的方法

    这篇文章主要介绍了Easyui Treegrid改变默认图标的方法的相关资料,需要的朋友可以参考下
    2016-04-04
  • 基于jquery跨浏览器显示的file上传控件

    基于jquery跨浏览器显示的file上传控件

    前面我写过一篇短小的文章,简要的介绍了下怎样定义input type=file 的样式。对于一般的表单,上传控件较少,这样的做法确实不错,既减少了代码,又美化了样式
    2011-10-10
  • JQuery中使文本框获得焦点的方法实例分析

    JQuery中使文本框获得焦点的方法实例分析

    这篇文章主要介绍了JQuery中使文本框获得焦点的方法,实例分析了jQuery针对文本框获得焦点的技巧,需要的朋友可以参考下
    2015-02-02
  • jquery自定义表单验证插件

    jquery自定义表单验证插件

    这篇文章主要为大家详细介绍了jquery自定义表单验证插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论