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插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
jQuery中的deferred对象和extend方法详解
May 08 jQuery
jQuery接受后台传递的List的实例详解
Aug 02 jQuery
jQuery实现广告条滚动效果
Aug 22 jQuery
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
jquery分页插件pagination使用教程
Oct 23 jQuery
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
jquery更改元素属性attr()方法操作示例
May 22 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开发中的安全防范知识详解
2013/06/06 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
机器学习python实战之决策树
2017/11/01 Python
python实现BackPropagation算法
2017/12/14 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
经济学人订阅:The Economist
2018/07/19 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
校园餐饮创业计划书
2014/01/10 职场文书
学校师德师风整改措施
2014/10/27 职场文书
2014年城市管理工作总结
2014/12/02 职场文书