<strike id="uohm1"></strike>
  • <label id="uohm1"><sub id="uohm1"><rt id="uohm1"></rt></sub></label>
  • <ol id="uohm1"><optgroup id="uohm1"></optgroup></ol>
    <label id="uohm1"><sub id="uohm1"><rt id="uohm1"></rt></sub></label><label id="uohm1"></label>

  • <label id="uohm1"></label><label id="uohm1"></label>

    jQuery checkbox RemoveAttr(checked)之后再點擊Attr(checked)屬性失效

    2018-01-24 關鍵詞:蘇州網站制作  蘇州網站開發  蘇州網站推廣  蘇州做網站   4805

    需求:具有審核權限的一定會有更新、查看權限,具有更新權限的一定會有查看全選沒有選中查看權限的、一定沒有更新、審核權限

    思路:根據value值來判斷,查看權限的value值會包含_find、更新權限的value值包含_mod、審核權限的value包含_review,在點擊checkbox的點擊事件上操作。

    $(function() {

                $("#modaltbody input[type='checkbox']").change(function(){       

                  var str=$(this).val();

                  if(str.indexOf('review')>0) {      

                      //審核

                      if($(this).is(":checked")) {            

                          $(this).parent().parent().find("input").each(function(){

                              if($(this).val().indexOf('find')>0 || $(this).val().indexOf('mod'))

                              {                            

                                  $(this).prop("checked",true);

                              }

                          })

                      }

                      else

                      {           

                          $(this).prop("checked",false);

                      }

                  }else if(str.indexOf('mod')>0)

                  {

                      //修改

                      if($(this).is(":checked")) {

                               $(this).parent().parent().find("input").each(function(){

                              if($(this).val().indexOf('find')>0)

                              {                            

                                  $(this).prop("checked",true);

                              }

                          })

                      }else

                      {

                          $(this).parent().parent().find("input").each(function(){

                              if($(this).val().indexOf('review')>0 || $(this).val().indexOf('mod')>0)

                              {                            

                                  $(this).prop("checked",false);

                              }

                          })

                      }


                  }else {

                      //查看

                      if(!$(this).is(":checked"))

                      {

                          $(this).parent().parent().find("input").each(function(){   

                                  $(this).prop("checked",false);                      

                          })

                      }


                  }


                })


            });

    jquery使用attr,removeAttr二次無法選中的問題解決辦法

    這里的選中checkbox、取消checkbox也可以用下面的寫法

    $(this).attr("checked","checked");//選中

    $(this).removeAttr("checked");//取消

    這種寫法的缺點是在chrome瀏覽器中第一次點擊有效后面就不行了,IE8倒是沒有問題

    百度了很久找到原因是HTML的屬性分為attribute和property,暫且將后者稱為特性。

    checked屬性即分為attribute->checked,和property->true,false。

    對于一個checkbox,若未定義checked="checked",alert($.attr("checked")) 的結果是undefined。若已定義則結果是checked。attribute并不隨著checkbox的狀態變化而改變。

    使用prop($.attr("checked"))的話輸出則分別為false和true。property則隨其變化而變化。

    所以在修改checked屬性時要使用prop()。prop()在jQuery1.6版本后新增。

    另外關于在IE9之前版本中,如果property沒有在DOM元素被移除之前刪除,使用.prop()方法設置DOM元素property(簡單類型除外:number、string、boolean)的值會導致內存泄露。為了安全的設置DOM對象的值,避免內存泄露,可以使用.data()方法。 目前尚未遇到,先記在這里。 

    $('#checkbox').attr('checked'); 返回的是checked或者是undefined,不是原來的true和false了,有關此問題的解決方法如下。 

    在JQ1.6之前的版本,我們會這樣寫我們的代碼: 

    這樣寫在JQ1.6之前完全沒問題,可是當我們升級JQ1.6到更高的版本時,問題就來了,此時我們會發現: 
    $('#cb').attr('checked'); 返回的是checked或者是undefined,不是原來的true和false了。 并且checked屬性在頁面初始化的時候已經初始化好了,不會隨著狀態的改變而改變。所以如果checkbox一開始是選中的,那么返回的是checked,如果一開始沒被選中,則返回的是undefined

    分析了其中的原因,可以這樣理解: 
    它將“屬性”與“特性”做了區別,屬性指的是“name,id”等等,特性指的是“selectedIndex, tagName, nodeName”等等。 
    JQ1.6之后,可以通過attr方法去獲得屬性,通過prop方法去獲得特性

    1.  $("#cb").attr("tagName"); //undefined   

    2.  $("#cb").prop("tagName"); //INPUT   

    以上是蘇州網站制作小編在實際項目中遇到的問題,記下了解決辦法,額外搜集了相關信息,僅供參考,希望對遇到同樣問題的小伙伴有幫助。

     

     

     

     


    首頁 網站建設 小程序 品牌設計 服務項目 案例展示 售后保障 聯系方式 新聞中心 關于我們 人才招聘
    我們的優勢

    細致入微的前期服務
    精準的策劃服務
    精湛的網頁設計
    穩定 可靠 極速的域名和服務器
    任何問題,24小時回復并處理

    版權所有:蘇州謝謝網絡傳媒有限公司  蘇ICP備11087090號   

    首頁 電話 服務項目
    久久久国产99久久国产久首页|真人无码视频|免费一级无码婬片A|国产激情久久久久影院老熟女|伊人热热久久原色播放www
    <strike id="uohm1"></strike>
  • <label id="uohm1"><sub id="uohm1"><rt id="uohm1"></rt></sub></label>
  • <ol id="uohm1"><optgroup id="uohm1"></optgroup></ol>
    <label id="uohm1"><sub id="uohm1"><rt id="uohm1"></rt></sub></label><label id="uohm1"></label>

  • <label id="uohm1"></label><label id="uohm1"></label>