2011-09-21 183 views
4

我只想檢查頁面上的所有複選框,如果用戶單擊「全選」按鈕。使用jQuery選擇所有複選框

在機身:

<button id="checkall">Select All</button> 

的jQuery:

<head> 

    <script type="text/javascript" src="js/jquery.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#checkall').click(function() { 
      $("input[type=checkbox]").each(function() { 
      $(this).attr('checked', true); 
     }); 
    }); 
    </script> 
</head> 

而且複選框被PHP的一點點發生:

echo '<li>'; 
echo '<input type="checkbox" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>'; 
echo '</li>'; 

誰能告訴我是什麼」米做錯了嗎?

回答

10

你不需要每個語句。只需選中所有複選框並設置屬性checked = true

$(document).ready(function(){ 
    $('#checkall').click(function() { 
     $("input:checkbox").prop('checked', true); 
    }); 
}); 

注意jQuery.prop()是一個添加到1.6及以上的功能。如果你使用的是1.6以前版本的jQuery,你將需要下面的內容。

$(document).ready(function(){ 
    $('#checkall').click(function() { 
     $("input:checkbox").attr('checked','checked'); 
    }); 
}); 
+0

牢記這隻會檢查框。其他代碼將需要取消選中。 –

+1

這個技巧。感謝一堆! –

+1

沒問題......很高興我能幫上忙。請接受正確的答案。 –

1

而是與標籤名稱選擇複選框,更好地爲它分配一些類與類名

$(document).ready(function(){ 
     $('#checkall').click(function() { 
      $(".checkbox").each(function(i,chkbox) { 
      $(chkbox).attr('checked', true); 
     }); 
    }); 
    }); 

PHP代碼

    echo '<li>'; 
       echo '<input type="checkbox" class="checkbox" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>'; 
       echo '</li>'; 
+0

這仍然有一個'});''太少了,'.each'在這裏有點多餘。 – pimvdb

+0

感謝您的建議 –

0

你只是錯過});.each(function(){}語句選擇它的!其他沒有錯誤!

$(document).ready(function() { 
    $('#checkall').click(function() { 
     $("input[type=checkbox]").each(function() { 
      $(this).attr('checked', 'checked'); 
      // or 
      // $(this).attr('checked', true); 
     }); // you missed this one!!! 
    }); 
}); 
+0

'jQuery.each()'不需要。 –

0

這會工作,短期和方便代碼

<script> 
    $('#check_all').click(function() { 
    $(this).closest('form').find(':checkbox').prop('checked' , this.checked ? true : false); 
}) 
</script>