我有一个表,有行,每行都有一个复选框,thead
处有一个主复选框。我的代码:
<table border="1">
<thead>
<tr>
<th><input type="checkbox" id="allcb" name="allcb"/></th>
<th>values</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" id="cb1" name="cb1"/></td>
<td>value1</td>
</tr>
<tr>
<td><input type="checkbox" id="cb2" name="cb2"/></td>
<td>value2</td>
</tr>
<tr>
<td><input type="checkbox" id="cb3" name="cb3"/></td>
<td>value3</td>
</tr>
</tbody>
</table>
(也尝试here)
任何人都可以帮助我,如果我检查顶部的主复选框怎么办,将检查所有复选框,如果我取消选中主,则将取消选中所有复选框。 谢谢你的帮助!
答案 0 :(得分:14)
工作演示http://jsfiddle.net/xYAfj/2/
$('#allcb').change(function(){
if($(this).prop('checked')){
$('tbody tr td input[type="checkbox"]').each(function(){
$(this).prop('checked', true);
});
}else{
$('tbody tr td input[type="checkbox"]').each(function(){
$(this).prop('checked', false);
});
}
});
更短的代码
工作演示http://jsfiddle.net/cse_tushar/4tss8/
$('#allcb').change(function () {
$('tbody tr td input[type="checkbox"]').prop('checked', $(this).prop('checked'));
});
答案 1 :(得分:3)
$(function(){
$("#allcb").click(function() {
var chkBoxes = $("input[id^=cb]");
chkBoxes.prop("checked", !chkBoxes.prop("checked"));
});
});
答案 2 :(得分:1)
我通过将表格中的复选框名称从 cb n 更改为 cb [] (更适合服务器操作)。我还考虑到可以通过单击另一个复选框来更改主复选框状态的事实:如果用户手动选择所有其他复选框,则主复选框应该反映它;此外,如果用户在单击主复选框后取消选中一行以检查所有其他行,则主复选框应取消选中。
你可以看到它在那里工作:https://jsfiddle.net/h6tgj02p/
<table border="1">
<thead>
<tr>
<th><input type="checkbox" id="allcb" name="allcb"/></th>
<th>values</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" id="cb1" name="cb[]"/></td>
<td>value1</td>
</tr>
<tr>
<td><input type="checkbox" id="cb2" name="cb[]"/></td>
<td>value2</td>
</tr>
<tr>
<td><input type="checkbox" id="cb3" name="cb[]"/></td>
<td>value3</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
/*
* Click on select all checkbox
*/
$('#allcb').click(function(e) {
$('[name="cb[]"]').prop('checked', this.checked);
});
/*
* Click on another checkbox can affect the select all checkbox
*/
$('[name="cb[]"]').click(function(e) {
if ($('[name="cb[]"]:checked').length == $('[name="cb[]"]').length || !this.checked)
$('#allcb').prop('checked', this.checked);
});
});
</script>