jquery切换只执行第一个条件

时间:2014-04-10 07:19:44

标签: javascript jquery checkbox

对于你们中的许多人来说,这一定相当简单。我编写了一个函数来选择所有复选框,如果用户点击锚标记()。但是,在第一次单击时,该函数选择所有checkboex但是当我再次单击锚标记时没有任何反应(它应该再次取消选中所有复选框)。这是我的JS函数

function createFooterRowForRunningDoubles(trClassName, colspanNumber, mainTable, table, i) {

    var mainTableId = $.data(mainTable, 'BetTableData').tableId;
    var tr = $('<tr/>')
        .addClass(trClassName)
        .appendTo(table)
        .append($('<td colspan="' + colspanNumber + '"/>'))
        .append($('<td />')
            .append($('<a id="fieldSelectAll"/>')
                .html(field)
                .click(function() {
                    var els = document.getElementsByName(mainTableId + "_select" + i);
                    for (var j = 0; j < els.length; j++) {
                        if ($("#fieldSelectAll").toggle()) {
                            els[j].checked = true;
                        }
                    }
                })) )
}  

编辑1:

因此,如果我删除锚标记并替换为全选复选框,则可以按照以下方式修改我的函数:

function createFooterRowForRunningDoubles(trClassName, colspanNumber, mainTable, table, i) {

    var mainTableId = $.data(mainTable, 'BetTableData').tableId;

    // Create row with checkbox
    var tr = $('<tr/>')
        .addClass(trClassName)
        .appendTo(table)
        .append($('<td colspan="' + colspanNumber + '"/>'))
        // Create checkbox
        .append($('<td/>')
            .html(field)
            .append($('<input type="checkbox" id="' + mainTableId + '_select' + i + '"/>'))
                .click(function () {
                    var els = document.getElementsByName(mainTableId + "_select" + i);
                    for (var j = 0; j < els.length; j++) {
                        if ($("#" + mainTableId + "_select" + i).is(':checked')) {
                            els[j].checked = true;
                        } else els[j].checked = false;
                    }
                }))
}

但是,不要使用&#39; checkall&#39;复选框,我只需要在锚标签点击时切换checkall事物。如果这有意义吗?

1 个答案:

答案 0 :(得分:2)

使用变量来跟踪状态:

function createFooterRowForRunningDoubles(trClassName, colspanNumber, mainTable, table, i) {

    var mainTableId = $.data(mainTable, 'BetTableData').tableId;
    var allChecked = false;
    var tr = $('<tr/>')
        .addClass(trClassName)
        .appendTo(table)
        .append($('<td colspan="' + colspanNumber + '"/>'))
        .append($('<td />')
            .append($('<a id="fieldSelectAll"/>')
                .html(field)
                .click(function() {
                    var els = document.getElementsByName(mainTableId + "_select" + i);
                    allChecked = !allChecked;
                    for (var j = 0; j < els.length; j++) {
                        els[j].checked = allChecked;
                    }
                })) )
}