jquery中attr和prop的区别分析


Posted in Javascript onMarch 16, 2015

在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。

关于它们两个的区别,网上的答案很多。这里谈谈我的心得,我的心得很简单:
• 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
• 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

上面的描述也许有点模糊,举几个例子就知道了。 

<a href="http://www.baidu.com" target="_self" class="btn">百度</a>

 这个例子里<a>元素的DOM属性有“href、target和class",这些属性就是<a>元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。

<a href="#" 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"

全文完。

以上就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
基于jquery可配置循环左右滚动例子
Sep 09 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
微信小程序的生命周期的详解
Oct 19 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
vue左侧菜单,树形图递归实现代码
Aug 24 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 Javascript
解决vue watch数据的方法被调用了两次的问题
Nov 07 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 #Javascript
JavaScript中消除闭包的一般方法介绍
Mar 16 #Javascript
jQuery实现的支持IE的html滑动条
Mar 16 #Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 #Javascript
nw.js实现类似微信的聊天软件
Mar 16 #Javascript
JavaScript控制table某列不显示的方法
Mar 16 #Javascript
详解addEventListener的三个参数之useCapture
Mar 16 #Javascript
You might like
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
J2EE中常用的名词进行解释
2015/11/09 面试题
企划主管岗位职责
2013/12/12 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
婚礼父母答谢词
2015/01/04 职场文书
云台山导游词
2015/02/03 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
科普 | 业余无线电知识-波段篇
2022/02/18 无线电