点击动态控件的数据表

时间:2016-05-10 23:38:29

标签: datatables

我有一个jquery数据表,我从变更事件的下拉列表中填充。我在数据表中有两个复选框,我在复选框上运行onclick。但是在第一次点击时,jquery只有当我第二次点击它时才会触发jquery触发,也会在切换页面时发生。我为点击添加了.on(),因为我研究并看到动态控件可以工作那样。我是否还缺少一些能让点击功能在第一次点击时工作的东西?以下是我的一些代码。

data table click on check box control no jquery click event on first click

data table click on check box control on second click

      $('#my-table').on('click', function () {
    var i = -1;
    $("input[id*='secondary']:checkbox").on("click", function () {

        if ($(this).is(':checked')) {
            i = selectedIds.indexOf($(this).val());
            if (i === -1) {
                selectedIds.push($(this).val());
            }

            CheckedSecondary(this);
        }
        else {
            jQuery(this).closest("tr").css("background-color", "");

            if (selectedIds.length > 0) {
                i = selectedIds.indexOf($(this).val());
                if (i != -1) {
                    selectedIds.splice(i, 1);
                }
            }
            if (!primaryChecked)
                $(this).closest('tr').find('input[type="checkbox"]').not(this).attr('disabled', false);
        }

    });

    $("#my-table").find("input[id*='primary']:checkbox").on("click", function () {
        if ($(this).is(':checked')) {
            primaryChecked = true;
            primaryID = this.value;

            CheckedPrimary(this);
        }
        else {
            primaryID = "";
            primaryChecked = false;
            $(this).closest('tr').find('input[type="checkbox"]').not(this).attr('disabled', false);

            $('input:checkbox[id^="primary"]').each(function () {

                if (!$(this).closest('tr').find('input[type="checkbox"]').is(':checked'))
                    $(this).attr('disabled', false);
            });
            jQuery(this).closest("tr").css("background-color", "");
        }

    });



});

1 个答案:

答案 0 :(得分:0)

您将点击处理程序附加到另一个没有意义的点击处理程序中。

删除第一个单击处理程序:

$('#my-table').on('click', function () {

});

将点击处理程序附加到复选框,如下所示:

$('#my-table').on('click', "input[id*='secondary']:checkbox", function () {

});

$('#my-table').on('click', "input[id*='primary']:checkbox", function () {

});