jquery中attr、prop、data区别与用法分析


Posted in jQuery onSeptember 25, 2019

本文实例讲述了jquery中attr、prop、data区别与用法。分享给大家供大家参考,具体如下:

在高版本的jquery中获取标签的属性,可以使用attr()、prop()、data(),那么这些方法有什么区别呢?

  • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
  • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
  • .data()看作是存取data-xxx这样DOM附加信息的方法

上面的描述也许有点模糊,举几个例子就知道了。

<a href="http://www.baidu.com" rel="external nofollow" target="_self" class="btn">百度</a>

这个例子里<a>元素的DOM属性有“href、target和class",这些属性就是<a>元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。

<a href="#" rel="external nofollow" id="link1" action="delete">删除</a>

这个例子里<a>元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,<a>元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。

再举一个例子:

<input id="chk1" type="checkbox" />是否可见
<input id="chk2" type="checkbox" checked="checked" />是否可见

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

$("#chk1").prop("checked") == false
$("#chk2").prop("checked") == true

如果上面使用attr方法,则会出现:

$("#chk1").attr("checked") == undefined
$("#chk2").attr("checked") == "checked"

说说.data(),我们知道 html 5里面DOM标签可以加以一些data-xxx的属性,你可以把.data()看作是存取data-xxx这样DOM附加信息的方法。当 然,.data()存取的内容不仅是字符串,还可以包含数组和对象。从jq1.4.3起, html5 的data-xxx属性会自动被添加到jq的data对象里,比如有下列代码:

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"noahlu"}'></div>

下面的等式都成立:

$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "noahlu";

从性能上对比,.prop() > .data() > .attr(),不同浏览器不同版本.data()和.attr()的性能关系有差异,不过.prop()总是最优的。

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 jQuery
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
详解使用jQuery.i18n.properties实现js国际化
May 04 jQuery
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
jQuery实现轮播图效果
Nov 26 jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
jquery插件实现搜索历史
Apr 24 jQuery
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 #jQuery
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 #jQuery
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 #jQuery
基于jquery ajax的多文件上传进度条过程解析
Sep 11 #jQuery
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 #jQuery
jQuery实现每日秒杀商品倒计时功能
Sep 06 #jQuery
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 #jQuery
You might like
PHP 远程关机实现代码
2009/11/10 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
微信自定义分享php代码分析
2016/11/24 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
python中栈的原理及实现方法示例
2019/11/27 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
Python如何获取文件路径/目录
2020/09/22 Python
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
俞敏洪励志演讲稿
2014/04/29 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
安全教育第一课观后感
2015/06/17 职场文书
法定代表人资格证明书
2015/06/18 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android