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插件
Mar 29 jQuery
jQuery实现多张图片上传预览(不经过后端处理)
Apr 29 jQuery
JQuery实现图片轮播效果
May 08 jQuery
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 jQuery
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
jQuery实现视频展示效果
May 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
PHP删除非空目录的函数代码小结
2013/02/28 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
短信提示使用 特效
2007/01/19 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
javascript关于继承解析
2016/05/10 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Python如何实现爬取B站视频
2020/05/20 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
教师个人的自我评价分享
2014/01/02 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
公司担保书范文
2014/05/21 职场文书
2014年仓库工作总结
2014/11/20 职场文书
离职证明范本
2015/06/12 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis