先从一个老生常谈的问题说起,使用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的区别的更多相关文章

  1. jquery中attr和prop的区别、 什么时候用 attr 什么时候用 prop (转自 芈老头 )

    jquery中attr和prop的区别. 什么时候用 attr 什么时候用 prop   在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这 ...

  2. jQuery中.attr()和.prop()的区别

    之前学习jQuery的时候,学习到了两种取得标签的属性值的方法:一种是elemJobj.attr(),另一种是elemJobj.prop().而在学习JS的时候,只有一种方法elemObj.getAt ...

  3. jquery中attr和prop的区别(转)

    在网络上看到这样一篇关于jquery中attr和prop的区别文章,觉得不错,所以转载了. 在jQuery 1.6中,.attr()方法查询那些没有设置的属性,则会返回一个undefined.如果你要 ...

  4. jquery中attr和prop的区别分析

    这篇文章主要介绍了jquery中attr和prop的区别分析的相关资料,需要的朋友可以参考下 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别 ...

  5. Jquery学习笔记(6)--jquery中attr和prop的区别【精辟】

    jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很 ...

  6. Jquery中attr 和 prop的区别和联系

    昨天在选择借款方类型的时候总是会出现选择要点两次的现象,比如点击公司,第一次点击选择公司,没有选中,必须在次点击才可以选中,总感觉是有点延迟加载的意思,后来审查元素, 发现是redio元素,这样的话就 ...

  7. Jquery中attr()与prop()的区别

    在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参数和用法也几乎完全相同.但是,这两个函数的用处却并不相同.下面我们来详细介绍这两个函数之间的区别. 1.操作对象 ...

  8. jQuery中 attr和Prop的区别

    出自这里: http://www.365mini.com/page/jquery_noconflict.htm 在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参 ...

  9. jquery 中 attr 和 prop 的区别

    问题:在jQuery引入prop方法后,什么时候使用attr,什么时候使用prop,两者区别. 判断: 对于HTML元素本身所有的固有属性,在处理的时候,使用prop方法 对于HTML元素后来我们自己 ...

随机推荐

  1. windows系统安装jira

     主题介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域,其配置灵活.功能全面.部署简单.扩展丰 ...

  2. 关于脱离laravel框架使用Illuminate/Validation验证器

    1.关于Illuminate/Validation验证器 Validation 类用于验证数据以及获取错误消息. github地址:github.com/illuminate/validation 文 ...

  3. 设计模式 --> (12)装饰模式

    装饰模式 时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一 些功能,最简单的做法就是修改接口,添加函数, ...

  4. java性能调优---------------------JVM调优方案

    JVM的调优的主要过程有: 1.确定堆内存大小(-Xmx.-Xms) 2.合理分配新生代和老年代(-XX:NewRatio.-Xmn.-XX:SurvivorRatio) 3.确定永久区大小(-XX: ...

  5. Linux下面如何用tcpdump抓包

    很多时候我们的系统部署在Linux系统上面,在一些情况下定位问题就需要查看各个系统之间发送数据报文是否正常,下面我就简单讲解一下如何使用tcpdump抓包 tcpdump是Linux下面的一个开源的抓 ...

  6. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  7. beta冲刺总结附(分工)-咸鱼

    冲刺链接 分工细则: 分配比例:前端:后台数据库+代码:服务器配置:测试=3:3:2:2 工作量权重比:   前端 后台 服务器 测试 翁陈华 0.9 0.1 0 0 黄紫仪 0.1 0.8 0 0 ...

  8. C语言第四次作业-嵌套作业

    一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2.设计思路 第一:定义三个整型变量f,t,o,分别代表五分,两分,一分的数量 第二:输入待换金额x 第三:令f=x/5;t=x/ ...

  9. Beta敏捷冲刺每日报告——Day4

    1.情况简述 Beta阶段Scrum Meeting 敏捷开发起止时间 2017.11.5 00:00 -- 2017.116 00:00 讨论时间地点 2017.11.5 晚9:30,电话会议会议 ...

  10. 学号:201621123032 《Java程序设计》第13周学习总结

    1:本周学习总结 2:为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 2.1:简述你想为你的系统增加什么网络功能?设计思路是什么? 创建了一个服务器监听8080端口,通过网络助手客户 ...