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 相关文章推荐
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
D3.js实现散点图和气泡图的方法详解
Sep 21 Javascript
svg动画之动态描边效果
Feb 22 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
May 07 Javascript
原生JS使用Canvas实现拖拽式绘图功能
Jun 05 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
Vue学习笔记之计算属性与侦听器用法
Dec 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
神族 Protoss 历史背景
2020/03/14 星际争霸
PHP array 的加法操作代码
2010/07/24 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP实现微信发红包程序
2015/08/24 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
python列表返回重复数据的下标
2020/02/10 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
中专自我鉴定范文
2013/10/16 职场文书
参观监狱心得体会
2014/01/02 职场文书
情人节寄语大全
2014/04/11 职场文书
美食节目策划方案
2014/05/31 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang