• 浅谈jquery中prop()和attr()


    我们都知道,一般在jquery中设置属性时要用到attr()方法,现在我们有一个效果,点击按钮切换复选框的选中状态,下面贴出html代码:

     <input type="checkbox" id="check">
     <label>复选框</label>
     <input type="button" value="切换" id="btn">
    

     js代码:

    <script>
        $(function(){
             var flag=false;
             $("#btn").click(function(){
                   if(flag==false){
                       $("#check").attr("checked",true);
                       flag=true;
                   }else{
                       $("#check").removeAttr("checked");
                       flag=false;
                   }
             });
         });
    </script>
    

     我们发现当点击按钮时,第一次点击时复选框会选中,第二次时点击复选框会取消选中,但以后再点击时复选框将不会有任何效果。更奇怪的是,打开调试工具,点击按钮时html代码中会有相应的checked="checked"代码段,但页面却没效果。

    当我们用prop()方法替换attr()方法时,一切将变得正常:

      <script>
            $(function(){
                var flag=false;
                $("#btn").click(function(){
                    if(flag==false){
                        $("#check").prop("checked",true);
                        flag=true;
                    }else{
                        $("#check").removeAttr("checked");
                        flag=false;
                    }
                });
            });
      </script>
    

    这是为什么呢,jquery1.6中新加了一个方法prop(),官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值。

    大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined。

    jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。

    那么,什么时候使用attr(),什么时候使用prop()?

    1.添加属性名称该属性就会生效应该使用prop();

    2.是有true,false两个属性使用prop();

    3.其他则使用attr();

    以下是官方建议attr(),prop()的使用:

    原文地址:http://www.jb51.net/article/41170.htm

    爱写代码的孩子运气不会太差。 github:http://github.com/lavyun 新浪微博:http://weibo.com/u/5921186675 个人网站: http://lavyun.cn
  • 相关阅读:
    js实现观察者模式
    磁盘阵列操作实战
    淘宝知名工程师
    Java线程并发控制基础知识
    java多线程总结
    NIO系列1:框架拆解
    Java NIO 系列教程
    Java NIO系列教程(三-十二) Buffer
    Java NIO系列教程(二) Channel
    Java NIO系列教程(一) Java NIO 概述
  • 原文地址:https://www.cnblogs.com/smartXiang/p/5686800.html
Copyright © 2020-2023  润新知