2015-02-10 30 views
0

我使用动态生成的表格行,并试图同时选中/取消选中两个不同表格中的复选框。 我们说如果用户点击#Table1的第一行,应该在#Table1和#Table2的第一行选中复选框。这工作正常。 但是,当用户试图取消选择相同的复选框时没有任何反应。 任何人都可以帮我解决这个问题吗?jQuery:同时选中/取消选中两个不同表格中的复选框

这里是我的代码:

$('#table1').on('click', 'tr', function (event) { 
    var rowIdx = $(this).closest("tr").index(); 
    RowSelect($("#table1"), rowIdx); 
    RowSelect($("#table2"), rowIdx); 
    if (event.target.type !== 'checkbox') { 
     $('.checkbox', this).trigger('click'); 
    } 
    $("input[name='RemoveRowCheckbox']").change(function (event) { 
     if ($(this).is(":checked")) { 
      $(this).closest('tr').addClass("CheckedRowColor"); 
     } else { 
      $(this).closest('tr').removeClass("CheckedRowColor"); 
     } 
    }); 
}); 

而这里的jsfiddle

回答

0

要调用RowSelect功能的两倍(即对表1和2),并设置复选框总是如此。实际上,对于表1,您无需再次设置复选框,因为您已经点击了它。你只需要设置从表2复选框,因此删除第一次调用Rowselect

//RowSelect($("#table1"), rowIdx); 
现在

在RowSelect功能,你需要在与前值否定设置复选框值如下图所示

function RowSelect(table, rowIdx) { 
    var $chk = table.find("tr").eq(rowIdx).find("input[type=checkbox]"); 
    $chk.prop('checked', !$chk.is(':checked')); 
}; 

JSFiddle Demo

+0

感谢您的回复。我不知道如何触发这个“在tr点击”,而不是“如果复选框检查” – Svidmax 2015-02-10 16:38:44

+0

不明白你问的是 – 2015-02-11 04:36:00

+0

道歉,我的问题有点不清楚。我的意思复选框仅在用户单击#Table1时的复选框而不是用户单击#Table1上的行时在#表2中进行检查。 – Svidmax 2015-02-11 12:01:59