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 EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
jQuery实现的简单在线计算器功能
May 11 jQuery
详解jquery选择器的原理
Aug 01 jQuery
基于Jquery Ajax type的4种类型(详解)
Aug 02 jQuery
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
jQuery实现可编辑的表格
Dec 11 jQuery
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
jQuery实现带进度条的轮播图
Sep 13 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 进程锁定问题分析研究
2009/11/24 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
php中动态调用函数的方法
2015/03/16 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
详解React中setState回调函数
2018/06/14 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
Python实现完整的事务操作示例
2017/06/20 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python3.8中使用f-strings调试
2019/05/22 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
老师自我鉴定范文
2013/12/25 职场文书
高三语文教学反思
2014/01/15 职场文书
自荐信需注意事项
2014/01/25 职场文书
生死抉择观后感
2015/06/09 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python