【问题标题】:How to expand and close the tr based on checbox click如何根据复选框单击展开和关闭 tr
【发布时间】:2017-07-06 15:46:52
【问题描述】:

我在一个表中有 10 行。每行第一列(td)是(+按钮)用于扩展新的tr行。我可以通过多次单击 + 按钮来展开和关闭任何行。但我也有一个常用的复选框来一次展开和关闭所有 tr。当我分开做时,这工作正常。如果我单击复选框,它将使用代码( $(this).click() )单击 + 按钮

但问题是我通过单击 + 按钮扩展了一行。之后,我单击通用复选框,然后它将打开所有展开的行,但在这里它关闭了我已经打开的行。我的要求不要关闭已通过单击 + 按钮打开的行。

在展开时,我正在向我单击的当前行(tr)添加一个新类(“.shown”)。+ 按钮类名称为(“.details-control”)。

以下代码是点击时常用的复选框代码。

$('.common-checkall').on('change', function() {
    var status = this.checked; 
    $(".details-control:visible").each(function(){
        $(this).click();
    });
});

这是+按钮展开的代码

$(elemId+' tbody').on('click', 'td.details-control', function(){
    var tr = $(this).closest('tr');
    var row = royaltiesTable.row(tr);
    try {
        if (row.child.isShown()) {
            row.child.hide();
            tr.removeClass('shown');
        } else {
            row.child(format(row.data(), tr)).show();
            tr.addClass('shown');
        }
    } catch(err) {
        console.log("");
    }
});

【问题讨论】:

  • 向我们展示您的工作代码。以便我们能够解决您的问题。
  • 我只添加了这段代码。

标签: javascript jquery performance jquery-plugins


【解决方案1】:

您可以在调用之前添加检查 $(this).click(); 例如

$('.common-checkall').on('change', function() {
    var status = this.checked; 
    $(".details-control:visible").each(function(){    
        if((status && !$(this).hasClass('shown')) || (!status && $(this).hasClass('shown'))) {
            $(this).click();
        }
    });
});

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2022-01-15
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多