使用Javascript一次选中所有复选框
仅当我逐个选中复选框时,此函数才会向right totalqt发出警报。但对#check_all:alerts totalqt=0无法正常工作 我做错了什么,有人能解释吗使用Javascript一次选中所有复选框,javascript,jquery,checkbox,triggers,Javascript,Jquery,Checkbox,Triggers,仅当我逐个选中复选框时,此函数才会向right totalqt发出警报。但对#check_all:alerts totalqt=0无法正常工作 我做错了什么,有人能解释吗 var totalqt=0; $('#check_all').click( function() { $('.checkbox').click(); alert(totalqt); } ); $('.checkbox').click(function(e) {
var totalqt=0;
$('#check_all').click( function() {
$('.checkbox').click();
alert(totalqt);
} );
$('.checkbox').click(function(e) {
e.stopPropagation();
if($(this).closest("tr").not('#hdr').hasClass("row_selected")){
$(this).closest("tr").not('#hdr').removeClass("row_selected");
totalqt=totalqt - parseInt($(this).closest("tr").find("#qt").text(), 10);
}
else {
$(this).closest("tr").not('#hdr').addClass("row_selected");
totalqt=totalqt + parseInt($(this).closest("tr").find("#qt").text());
}
HTML看起来是这样的
<tr>
...
<td><input type="checkbox" name="checkbox[]" method="post" value="" class="checkbox"/></td>
...
</tr>
...
...
实际上,手动更改复选框不会触发处理程序。试试这样的
function doIt(obj){
if($(obj).closest("tr").not('#hdr').hasClass("row_selected")){
$(obj).closest("tr").not('#hdr').removeClass("row_selected");
totalqt=totalqt - parseInt($(obj).closest("tr").find("#qt").text(), 10);
}
else {
$(obj).closest("tr").not('#hdr').addClass("row_selected");
totalqt=totalqt + parseInt($(obj).closest("tr").find("#qt").text());
}
}
然后
及
我已将答案更改为以下内容,请尝试以下操作:
<div class="checkall">
<input type="checkbox" id="checkall">
</div>
<div id="list">
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
</div>
}))
.click()
只会触发事件处理程序,但不会实际更改状态或触发默认操作。可能会重复显示“检查所有勾号”的屏幕。当解钩-根本不解钩任何东西
$('#check_all').click( function() {
if($(this).prop('checked')){
$('.checkbox').each(function(){
$(this).prop('checked', true);
doIt(this);
alert(totalqt);
});
}else{
$('.checkbox').each(function(){
$(this).prop('checked', false);
doIt(this);
alert(totalqt);
});
}
} );
<div class="checkall">
<input type="checkbox" id="checkall">
</div>
<div id="list">
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
</div>
var checkboxes = $(":checkbox", "#list").change(function() {
var allIsChecked = checkboxes.length === checkboxes.filter(":checked").length;
checkAll[0].checked = allIsChecked;
var checkAll = $("#checkall").change(function() {
checkboxes.prop("checked",this.checked);
});