淺談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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM