2014-01-29 134 views
0

我做了這個簡單的代碼來檢查所有checkboxesgridview複選框,在GridView

function chkFun() { 
     if ($("#chkSelectAll").is(':checked')) { 
      $("#grdSearchResults tr").each(function() { 
       debugger 
       var checkBox = $(this).find("input[id*='chkSelected']"); 
       $(checkBox).attr("checked", true); 
      }); 
     } 
     else { 
      $("#grdSearchResults tr").each(function() { 
       debugger 
       var checkBox = $(this).find("input[id*='chkSelected']"); 
       $(checkBox).attr("checked", false); 
      }); 
     } 
    } 

chkFun將在chkAllcheckboxOnClicking叫..選中所有複選框,並在第一個工作正常時間[選擇&取消] ..之後,它根本不工作,我不知道爲什麼。

我試圖debugg它爲u在代碼中看到它走在正確到處..但此行$(checkBox).attr("checked", false);後第一時間是沒有做任何事情

+0

您能否提供您的標記?只有你的JS代碼很難。 – Drew

+0

嘗試使用類而不是id –

回答

4

使用.prop()而不是attr()

function chkFun() { 
    if ($("#chkSelectAll").is(':checked')) { 
     $("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', true); 
    } else { 
     $("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', false); 
    } 
} 

你也不需要使用.each(),你可以用一行選擇全部

或者你可以將函數綁定到chkSelectAll並使用註釋中推薦的代碼Satpal s使代碼更短

$('#chkSelectAll').on('change', function() { 
    $("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', this.checked) 
}); 
+0

好吧,'.prop()'工作正常..你能解釋爲什麼'.attr()'不是一個好函數嗎? – Mahmoud

+0

.attr不適用於boleean values @Mahmoud這裏有一個很好的帖子,解釋prop vs attr http://stackoverflow.com/a/5876747/1696560 – Anton

+1

如果可以刪除塊並且可以用'$(「 #grdSearchResults tr「)。find(」input [id * ='chkSelected']「)。prop('checked',this.checked)' – Satpal