Jquery中attr与prop的区别详解

 更新时间:2017年05月27日 10:55:25   作者:我叫了了  
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。下面这篇文章主要给大家介绍了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的区别,发现根本看不懂,如下图

于是,我们做了个实验

  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)


效果

发现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的on和click的区别详解

    基于jquery的on和click的区别详解

    下面小编就为大家分享一篇基于jquery的on和click的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 使用Jquery实现每日签到功能

    使用Jquery实现每日签到功能

    签到功能现在算是社交化网站增加网站粘合度的一个普遍做法了,于是也想在自己的项目中添加一个,经过一番度娘,终于完成,这里分享给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • jQuery插件分享之分页插件jqPagination

    jQuery插件分享之分页插件jqPagination

    jqPagination 是一个简单易用的轻量级 jQuery分页插件,其使用了 HTML5 和 CSS3 技术来实现。此插件提供了几个参数设置选项,通过简单的配置即可生成分页控件。此外,它的外观样式是可自定义的,扩展性很强。
    2014-06-06
  • jqueryMobile使用示例分享

    jqueryMobile使用示例分享

    这里是本人学习jQuery Mobile的过程,现在将学习过程中的实例一一展现出来,希望能帮到更多的新手。本系列中实例都经过了本人的亲自测试。
    2016-01-01
  • jquery实现上传文件进度条

    jquery实现上传文件进度条

    这篇文章主要为大家详细介绍了jquery实现上传文件进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • jQuery EasyUI API 中文文档 - ComboGrid 组合表格

    jQuery EasyUI API 中文文档 - ComboGrid 组合表格

    jQuery EasyUI API 中文文档 - ComboGrid 组合表格,需要的朋友可以参考下。
    2011-10-10
  • jQuery实现弹出带遮罩层的居中浮动窗口效果

    jQuery实现弹出带遮罩层的居中浮动窗口效果

    这篇文章主要介绍了jQuery实现弹出带遮罩层的居中浮动窗口效果,涉及jQuery针对页面元素的运算与样式的动态修改相关技巧,需要的朋友可以参考下
    2016-09-09
  • jquery判断input值不为空的方法

    jquery判断input值不为空的方法

    这篇文章主要介绍了jquery判断input值不为空的方法的相关资料,需要的朋友可以参考下
    2016-06-06
  • jQuery实现简单三级联动效果

    jQuery实现简单三级联动效果

    这篇文章主要为大家详细介绍了jQuery实现简单三级联动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • jquery+Jscex打造游戏力度条

    jquery+Jscex打造游戏力度条

    游戏力度条大家一定不陌生,在很多游戏中都能用到,本文介绍了jquery+Jscex打造游戏力度条,有需要的朋友可以了解一下。
    2016-10-10

最新评论