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 tip提示插件(实例分享)
Apr 28 jQuery
jquery.masonry瀑布流效果
May 25 jQuery
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
jquery的 filter()方法使用教程
Mar 22 jQuery
菊花转动的jquery加载动画效果
Aug 19 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python 自动补全(vim)
2014/11/30 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
python识别验证码图片实例详解
2020/02/17 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
旅游网创业计划书
2014/01/31 职场文书
会计专业自我鉴定
2014/02/10 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
推荐信怎么写
2014/05/09 职场文书
文明生主要事迹
2014/05/25 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
股东出资协议书
2016/03/21 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
Python字符串常规操作小结
2022/04/03 Python
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python