zoukankan      html  css  js  c++  java
  • 浅谈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
  • 相关阅读:
    Leetcode 15 3Sum
    Leetcode 383 Ransom Note
    用i个点组成高度为不超过j的二叉树的数量。
    配对问题 小于10 1.3.5
    字符矩阵的旋转 镜面对称 1.2.2
    字符串统计 连续的某个字符的数量 1.1.4
    USACO twofive 没理解
    1002 All Roads Lead to Rome
    USACO 5.5.1 求矩形并的周长
    USACO 5.5.2 字符串的最小表示法
  • 原文地址:https://www.cnblogs.com/smartXiang/p/5686800.html
Copyright © 2011-2022 走看看