在通用功能中保持列表选中复选框

时间:2014-05-22 07:51:31

标签: javascript jquery checkbox

我的应用中有很多数据表。每个表都有一个复选框列,标题为a" master"复选框以选中/取消选中所有。

为了防止复制/粘贴处理检查/取消选中的代码,我在主应用程序中进行了关闭。

但是我需要为显示的页面(它有自己的js脚本)保持所选复选框的状态。

如何使这个足够通用?

这是一个示例(我在主应用程序中处理了更多东西)

var App = (function () {
    var handleDataTables = function () {
        var table;
        table = $('.dataTable');
        table.aSelected = [];
        table.on('draw.dt', function (e, settings, json) {
            handleUniform();
        });
        table.on('xhr.dt', function (e, settings, json) {
            $(this).add('.group-checkable').change(function () {
                var set, group_checked;
                set = $(this).attr("data-set");
                group_checked = $(this).is(":checked");

                $(set).each(function () {
                    if (group_checked) {
                        $(this).prop('checked', true);
                        if ($.inArray($(this).attr("value"), table.aSelected) === -1) {
                            table.aSelected.push($(this).attr("value"));
                        }
                    } else {
                        $(this).prop('checked', false);
                        table.aSelected.pop($(this).attr("value"));
                    }
                });
                $.uniform.update(set);
            });

            $(this).add('.checkboxes').change(function (e) {
                var checked;
                checked = $(e.target).is(":checked");
                console.log(table.DataTable);
                if (checked) {
                    if (table.aSelected.length === table[0].rows && !$(this).add('.group-checkable').parent().hasClass("checked")) {
                        $(this).add('.group-checkable').parent().addClass('checked');
                    }
                    console.log($.inArray($(e.target).attr("value"), table.aSelected));
                    if ($.inArray($(e.target).attr("value"), table.aSelected) === -1) {
                        table.aSelected.push($(e.target).attr("value"));
                    }
                } else {
                    if ($(this).add('.group-checkable').parent().hasClass("checked")) {
                        $(this).add('.group-checkable').parent().removeClass('checked');
                    }
                    table.aSelected.pop($(e.target).attr("value"));
                }
                console.log(table.aSelected);
                table.display_btns();
            });
        });
    });

    return {
        //main function to initiate template pages
        init: function () {
            handleDataTables();
        }
    }
});

谢谢!

0 个答案:

没有答案