jquery中attr与prop的区别
先从一个老生常谈的问题说起,使用jquery实现全选全不选。楼主先使用的jquery版本是 jquery-1.11.1.min.js
全选<input type="checkbox" name="checkedAll" id="checkedAll" onclick="checkedAll();"/><br>
A<input type="checkbox" name="ck" /><br>
B<input type="checkbox" name="ck" /><br>
<script type="text/javascript">
function checkedAll(){
var temp = $("#checkedAll").attr("checked");
$(":checkbox[name='ck']").attr("checked" , temp);
}
</script> 使用这种方式发现并不能实现全选全不选的功能,alert(temp)值为undefined.于是把attr替换成prop,之前听说过两者的区别但是一直没有深入的探究过。 <script type="text/javascript">
function checkedAll(){
var temp = $("#checkedAll").prop("checked");
$(":checkbox[name='ck']").prop("checked" , temp);
}
</script> 使用下面的这种方式可以实现功能,alert(temp)值全选/全不选时分别是true/false. 网上搜了点资料发现jquery的prop()这个方法是jquery1.6之后才有的,给出的解释是: 在jQuery中,prop()
函数的设计目标是用于设置或获取指定DOM元素(指的是JS对象,Element类型)上的属性(property);attr()
函数的设计目标是用于设置或获取指定DOM元素所对应的文档节点上的属性(attribute)。
在jQuery的底层实现中,函数attr()
和prop()
的功能都是通过JS原生的Element对象实现的。attr()
函数主要依赖的是Element对象的getAttribute()
和setAttribute()
两个方法。prop()
函数主要依赖的则是JS中原生的对象属性获取和设置方式。 我们知道jquery就是对dom对象和js相关操作的又一次封装,而checkbox原生的对象属性是checked这个属性。
那么知道这个原理后我们用原生的js写一下全选全不选的功能,看看他的底层是怎么实现的。 <script type="text/javascript">
function checkedAll(){
var elementAll = document.getElementById("checkedAll");
var falg1 = elementAll.getAttribute("checked"); //attr()取值
var name = elementAll.getAttribute("name"); //attr()取值
alert(falg1)//null
alert(name)//checkedAll
var falg2 = elementAll['checked'];//prop()取值
alert(falg2)// true/false
var elements = document.getElementsByName("ck");
for(var i = 0; i < elements.length; i++){
//elements[i].setAttribute("checked", elementAll.checked);//使用这种方式就是你用jquery的attr()给checked赋值,实现不了全选全不选。
elements[i]['checked'] = elementAll.checked;//使用这种方式就是你用jquery的prop()给checked赋值,可以实现全选全不选
}
}
</script> 原理搞明白了,推荐一种百试不爽,在jquery1.6以后的版本中都可以使用的方法。 全选<input type="checkbox" name="checkedAll" id="checkedAll" onclick="checkedAll(this);"/><br>
A<input type="checkbox" name="ck" /><br>
B<input type="checkbox" name="ck" /><br>
<script type="text/javascript">
function checkedAll(item){ //这里使用 "this"关键字,代表当前dom对象,代码看着简洁。
$(":checkbox[name='ck']").prop("checked" , item.checked);
}
</script> 最后附一张图,关于attr()和 prop()的使用时机。(两个都打对号的建议使用prop函数) 参考文章:
1.http://www.365mini.com/page/jquery-attr-vs-prop.htm
2.http://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html
jquery中attr与prop的区别的更多相关文章
- jquery中attr和prop的区别、 什么时候用 attr 什么时候用 prop (转自 芈老头 )
jquery中attr和prop的区别. 什么时候用 attr 什么时候用 prop 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这 ...
- jQuery中.attr()和.prop()的区别
之前学习jQuery的时候,学习到了两种取得标签的属性值的方法:一种是elemJobj.attr(),另一种是elemJobj.prop().而在学习JS的时候,只有一种方法elemObj.getAt ...
- jquery中attr和prop的区别(转)
在网络上看到这样一篇关于jquery中attr和prop的区别文章,觉得不错,所以转载了. 在jQuery 1.6中,.attr()方法查询那些没有设置的属性,则会返回一个undefined.如果你要 ...
- jquery中attr和prop的区别分析
这篇文章主要介绍了jquery中attr和prop的区别分析的相关资料,需要的朋友可以参考下 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别 ...
- Jquery学习笔记(6)--jquery中attr和prop的区别【精辟】
jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很 ...
- Jquery中attr 和 prop的区别和联系
昨天在选择借款方类型的时候总是会出现选择要点两次的现象,比如点击公司,第一次点击选择公司,没有选中,必须在次点击才可以选中,总感觉是有点延迟加载的意思,后来审查元素, 发现是redio元素,这样的话就 ...
- Jquery中attr()与prop()的区别
在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参数和用法也几乎完全相同.但是,这两个函数的用处却并不相同.下面我们来详细介绍这两个函数之间的区别. 1.操作对象 ...
- jQuery中 attr和Prop的区别
出自这里: http://www.365mini.com/page/jquery_noconflict.htm 在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参 ...
- jquery 中 attr 和 prop 的区别
问题:在jQuery引入prop方法后,什么时候使用attr,什么时候使用prop,两者区别. 判断: 对于HTML元素本身所有的固有属性,在处理的时候,使用prop方法 对于HTML元素后来我们自己 ...
随机推荐
- 关于Roll A Ball实例练习记录
学习中不段进步! 游戏思路:通过键盘控制白色小球,让它"捡起"柠黄色方块,捡起一个加1分,全部捡起游戏胜利! 游戏对象: Ground:绿色地面 player: 小球 Obsta ...
- angularjs上传图片和文件
很简单: $scope.upload = function() { var f = $scope.myFile; var fd = new FormData(); var img = document ...
- 笔记:MyBatis Mapper XML文件详解 - Result Maps
Result Maps(结果集) resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许 ...
- 笔记:I/O流-内存映射文件
内存映射文件时利用虚拟内存实现来将一个文件或者文件的一部分映射到内存中,然后整个文件就可以当作数组一样的访问,这个比传统的文件操作要快得多,Java 使用内存映射文件首先需要从文件中获取一个chann ...
- 【Python】 更棒的Excel操作模块xlwings
[xlwings] 说到Python操作Excel,有好多模块都可以支持这个工作.比如最底层的win32模块不仅可以操作Excel,还可以操作其他一众windows的软件. 其他的比较熟悉的有xlrd ...
- New UWP Community Toolkit - Markdown
概述 前面 New UWP Community Toolkit 文章中,我们对 V2.2.0 版本的重要更新做了简单回顾,其中简单介绍了 MarkdownTextBlock 和 MarkdownDoc ...
- 【Java】0X001.配置开发环境,JDK、classpath等
[Java]0x01 配置开发环境,JDK.CLASSPATH等 一. 下载JDK安装文件 首先,进入Oracle官网Java页面. 注意,要下载的是JDK而不是JRE,这点很重要,因为JRE并不包含 ...
- 连接数据后,当执行查询语句报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
参考博客:http://blog.csdn.net/lanchengxiaoxiao/article/details/40982771 1.在cmd窗口通过sqlplus连接数据库 C:\Users\ ...
- Beta Scrum Day 5
听说
- 结对编程作业——四则运算GUI程序
毛忠庆 201421122088 赵嘉楠 201421122065 源代码存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git 题目描述 使用 -n 参数控 ...