Jquery中attr与prop的区别详解


Posted in jQuery onMay 27, 2017

实践过程

在前一段时间,同事做了一个页面,效果是这样的

Jquery中attr与prop的区别详解
页面

当点击左上方那个checkBox时,要将下面的checkBox全部选中,我们的代码是这样的

$("input[name='checkbox']").attr("checked",true);

然并卵,一点效果都没有,后来换成这样,好了

$(function(){
  $("#all").click(function(){
   if($("#all").prop("checked")){
    $("input[name='checkbox']").prop("checked",true);
   }else{
    $("input[name='checkbox']").prop("checked",false);
   }
  });
 });

于是上官方的文档查了下attr和prop的区别,发现根本看不懂,如下图

Jquery中attr与prop的区别详解

Jquery中attr与prop的区别详解

于是,我们做了个实验

c1:<input id="c1" name="checkbox" type="checkbox" checked="checked" /></br>
  c2:<input id="c2" name="checkbox" type="checkbox" checked=true/></br>
  c3:<input id="c3" name="checkbox" type="checkbox" checked=""/></br>
  c4:<input id="c4" name="checkbox" type="checkbox" checked/></br>
  c5:<input id="c5" name="checkbox" type="checkbox" /></br>
  c6:<input id="c6" name="checkbox" type="checkbox" checked=false/></br>

   var a1=$("#c1").attr("checked");
   var a2=$("#c2").attr("checked");
   var a3=$("#c3").attr("checked");
   var a4=$("#c4").attr("checked");
   var a5=$("#c5").attr("checked");
   var a6=$("#c6").attr("checked");

   var p1=$("#c1").prop("checked");
   var p2=$("#c2").prop("checked");
   var p3=$("#c3").prop("checked");
   var p4=$("#c4").prop("checked");
   var p5=$("#c5").prop("checked");
   var p6=$("#c6").prop("checked");

   console.log("a1:"+a1);
   console.log("a2:"+a2);
   console.log("a3:"+a3);
   console.log("a4:"+a4);
   console.log("a5:"+a5);
   console.log("a6:"+a6);

   console.log("p1:"+p1);
   console.log("p2:"+p2);
   console.log("p3:"+p3);
   console.log("p4:"+p4);
   console.log("p5:"+p5);
   console.log("p6:"+p6);

结果是这样的(chrome)

Jquery中attr与prop的区别详解
效果

发现attr的返回值要么是checked要么是undefined,prop的返回值只有true和false。

经过在网上搜素和测试总结

prop()函数的结果:

      1.如果有相应的属性,返回指定属性值。

      2.如果没有相应的属性,返回值是空字符串。

attr()函数的结果:

      1.如果有相应的属性,返回指定属性值。

      2.如果没有相应的属性,返回值是undefined。

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

jQuery 相关文章推荐
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 jQuery
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
jquery无缝图片轮播组件封装
Nov 25 jQuery
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
jQuery实现form表单基于ajax无刷新提交方法实例代码
Nov 04 jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
jQuery实现移动端图片上传预览组件的方法分析
May 01 jQuery
jquery实现上传图片功能
Jun 29 jQuery
jquery插件实现代码雨特效
Apr 24 jQuery
jQuery插件imgAreaSelect基础讲解
May 26 #jQuery
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 #jQuery
jQuery导航条固定定位效果实例代码
May 26 #jQuery
bootstrap+jQuery实现的动态进度条功能示例
May 25 #jQuery
jQuery滚动插件scrollable.js用法分析
May 25 #jQuery
jQuery Masonry瀑布流布局神器使用详解
May 25 #jQuery
jQuery模拟实现天猫购物车动画效果实例代码
May 25 #jQuery
You might like
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
js截取字符串功能的实现方法
2017/09/27 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
深入了解Python中pop和remove的使用方法
2018/01/09 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python实现机器学习之多元线性回归
2018/09/06 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
销售人员获奖感言
2014/02/05 职场文书
入党现实表现材料
2014/12/23 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL