jquery中attr() & prop() 的区别与其实现方法
2024-09-29 05:46:42
$(function(){
$('#check').attr('checked'); // undefind ???一头雾水
})
在jquery中 attr 本来就是用来设置或者获取属性的,可是上面的方法却返回给 undefined ?
然后我尝试用
$('#check').prop('checked');
发现可以正常运行!!
在jquery中prop是相对来说版本比较新的一个方法,乍一看它的功能好像和attr没有什么很大的差别,的确,它们都可设置或者来获取属性,比如
$('#div').attr('title','hello');
$('#div').prop('title','hello');
$('#div').attr('class');
$('#div').prop('class');
都可以正常的运行,通过查看他们在jquery中的源码我有所发现:
在原生js中我们可以用 setAttribute() 和 getAttribute() 进行操作 ,也可以用 .|[] 进行操作 (exp: document.getElementById('div').title|| document.getElementById('div')[title] )。
在jquery当中 attr() 方法最主要的就是应用了原生中的 setAttribute() 和 getAttribute() 而 prop() 方法用的则是 . | [] 这就是他们之间为什么会有不同之处的根本原因(当然,其中还有一些hook的因素影响着,感兴趣的同学可以去看一看源码)
那么 attr() 和 prop() 在平常的使用中有什么区别呢,在jQuery 1.6中,.attr()
方法查询那些没有设置的属性,则会返回一个undefined。如果你要去恢复或者改变DOM状态值,类似checked
,selected
,disabled
等表单元素的状态,最好使用.prop()
方法,而自定义的属性最好使用attr() 方法,若使用prop() 同样可能会出现undefined的情况。官方给出了下面的一个表:(什么时候用哪种方法)
最新文章
- GTest Google的一种白盒单元测试框架 开源项目
- Android学习第一天-adb常用命令
- MAC OS X的ACL扩展权限设置
- RMQ训练题 codevs 1291 火车线路 已经搞定
- 复杂的databinding接受Ilist作为数据源
- 收缩Mysql的ibdata1文件大小方法
- VC远控(三)磁盘显示
- leetcode第31题--Longest Valid Parentheses
- 对Java的初步的认识:
- 【题解】Luogu P4069 [SDOI2016]游戏
- 转:Eclipse中web项目部署至Tomcat步骤
- 【BZOJ1565】【NOI2009】植物大战僵尸 网络流 最大权闭合子图
- python序列类型字符串的方法L.index()与L.find()区别
- Android 如何保持屏幕常亮
- bootstrap和ajax相结合
- Linux内核分析(第六周)
- Mysql中unique与primary约束的区别分析(转)
- weexpack 使用
- StackView实现叠加在一起的图片循环移动像循环队列一样
- Netty核心概念(5)之Channel
热门文章
- 【nginx】关于Nginx的一些优化(突破十万并发)
- RethinkDB创始人教你怎样找到创业点子
- C#中方法中 ref 和 out的使用
- linux crontab 定时任务解析
- Linq的优缺点
- error LNK2022: metadata operation failed (801311D6) : Differing number of methods in duplicated types
- 创建spring管理的自定义注解
- 【shell】判断一个变量是否为空
- Gemini.Workflow 双子工作流入门教程三:定义流程:流程节点、迁移条件参数配置
- [2018-08-25]模板引擎Razor Engine 用法示例