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 相关文章推荐
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
jQuery结合jQuery.cookie.js插件实现换肤功能示例
Oct 14 jQuery
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 jQuery
jQuery实现朋友圈查看图片
Sep 11 jQuery
jQuery实现二级导航菜单的示例
Sep 30 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生成缩略图的代码
2011/01/12 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
20个最新的jQuery插件
2012/01/13 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
html5+canvas实现支持触屏的签名插件教程
2017/05/08 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
python字典get()方法用法分析
2015/04/17 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
经济系大学生求职信
2013/10/01 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
主题教育活动总结
2014/05/05 职场文书
电工技术比武方案
2014/05/11 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
运动会宣传稿50字
2015/07/23 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript