2017-07-06 60 views
0

我在表中有10行。每行第一列(td)是用於擴展新tr行的(+按鈕)。我可以通過手動點擊+按鈕來展開和關閉任何行。但我也有一個常見的複選框來一次性展開和關閉所有tr。這是工作正常,當我分開做。如果我點擊複選框,它會點擊+按鈕使用代碼($(this).click())如何根據checbox點擊擴展和關閉tr

但問題是我通過單擊+按鈕擴大了一行。之後,我點擊通用複選框,然後它將打開所有展開的行,但在這裏它關閉了我已打開的行。我的要求不要通過單擊+按鈕關閉已打開的行。

在展開的時候,我在當前行(tr)中添加了一個新類(「.shown」),其中+ button類名是(「.details-control」)。

以下代碼是針對點擊時的常用複選框代碼。

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

這是+按鈕的代碼調用 $(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(""); 
    } 
}); 
+0

向我們顯示您的工作代碼。以便我們能夠解決您的查詢。 – Sharmila

+0

我只添加了這段代碼。 –

回答

0

您可以添加一個檢查

$('.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(); 
     } 
    }); 
}); 
+0

嗨帕克仍然沒有工作,與現有相同。 –