jquery 1.10.2批量选择复选框,回调错误?

时间:2014-06-19 06:08:04

标签: javascript jquery checkbox

我读过check/uncheck all checkboxes with jquery 1.10.2,他提到不要将函数放在正确的回调中。我在chrome dev工具中进行了调试,并注意到在使用我的其他jquery函数添加一行后,复选框监听器不会被点击。

根据jquery"准备好"当DOM完成加载时,会触发docs,document.ready' s回调。通过我的jquery处理程序添加一行后,DOM已经完成加载,这就是我看到新行的方式。所以根据我的理解,我应该可以让我的复选框听众进入"准备好"回调,不是吗?这是我的代码:

$(document).ready(function() {
        var i = 1;
        $("#add_row").click(function() {
            $('#addr' + i).html("<td><input type='checkbox' class='form-control case'></td>"  + 

                                "<td><input name='name" + i + "' type='text' placeholder='Name' " +
                                "class='form-control input-md'></td>" +

                                "<td><input name='mail" + i + "' type='text' placeholder='Mail' " +
                                "class='form-control input-md'></td>"

                                );

            $('#tab_logic').append('<tr id="addr' + (i + 1) + '"></tr>');
            i++;
        });

        $("#delete_btn_" + i).click(function(event) {
            if (i > 1) {
                $("#addr" + (i - 1)).html('');
                i--;
            }
        });


        // add multiple select / deselect functionality
        $("#selectall").click(function () {
            $('.case').prop('checked', this.checked);
        });

        /* Listen to any checkbox.  After one is toggled,
           if all checkboxes are selected, select the checkall checkbox
           otherwise checkall checkbox shouldn't be checked */
        $(".case").click(function() {
            if($(".case").length == $(".case:checked").length) {
                $("#selectall").prop("checked", "checked");
            } else {
            $("#selectall").removeProp("checked");
            }
        });

    });

1 个答案:

答案 0 :(得分:0)

    $("body").on('change','.case',function() {
        if($(".case").length == $(".case:checked").length) {
            $("#selectall").prop("checked", "checked");
        } else {
            $("#selectall").removeProp("checked");
        }
    });