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自定义图片上传插件实例代码
Apr 04 jQuery
jQuery Tree Multiselect使用详解
May 02 jQuery
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
jquery+css3实现熊猫tv导航代码分享
Feb 12 jQuery
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
jQuery实现简单评论功能
Aug 19 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
如何基于jQuery实现五角星评分
Sep 02 jQuery
jQuery实现带进度条的轮播图
Sep 13 jQuery
jQuery实现手风琴特效
Jan 11 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获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
降低PHP Redis内存占用
2017/03/23 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python django model联合主键的例子
2019/08/06 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
车间工艺员岗位职责
2013/12/09 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
解决python3安装pandas出错的问题
2021/05/20 Python