Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript一次选中所有复选框_Javascript_Jquery_Checkbox_Triggers - Fatal编程技术网

使用Javascript一次选中所有复选框

使用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) {

仅当我逐个选中复选框时,此函数才会向right totalqt发出警报。但对#check_all:alerts totalqt=0无法正常工作

我做错了什么,有人能解释吗

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);
});