我正在基于复选框过滤我的TableA行,现在我想使用TableB可选行来过滤它们,因此使用Checkboxes + TableB进行过滤,此时它只是复选框。
这是代码,
<div class="someRow" style="width: 100%">
<asp:CheckBox ID="Open" runat="server" ClientIDMode="Static" Checked="true" onclick="RMToggle(this)" />
<asp:CheckBox ID="New" runat="server" ClientIDMode="Static" onclick="RMToggle(this)" />
<asp:CheckBox ID="Closed" runat="server" ClientIDMode="Static" onclick="RMToggle(this)" />
<asp:CheckBox ID="Rejected" runat="server" ClientIDMode="Static" onclick="RMToggle(this)" />
</div>
<table id="tableA" class="dmctable">
<tr data-id="Open" fid="1"></tr>
<tr data-id="Rejected" fid="2"></tr>
<tr data-id="New" fid="1"></tr>
<tr data-id="Open" fid="3"></tr>
<tr data-id="Closed" fid="2"></tr>
<tr data-id="Open" fid="2"></tr>
<tr data-id="New" fid="1"></tr>
<tr data-id="Open" fid="3"></tr>
</table>
<table id="tableB" class="dmctable2">
<tr data-fid="1" Class="selected"></tr>
<tr data-fid="2"></tr>
<tr data-fid="3" Class="selected"></tr>
</table>
JS
function RMToggle( elm ) { // elm = element
var ischecked = elm.checked,
$target = $('#table1 tr[data-id="' + elm.id + '"]');
if( ischecked ) {
$target.show(); // HERE how can I check if tr's FID is visible in tableB or not
}
else {
$target.hide();
}
}
如何根据TableB中的复选框和行过滤TableA中的行。
我可以在表b中检查是否选择了一行,
if ($("#tableB tr[data-fid='1']").children(".selected").length > 0)
但是如果(isChecked)我怎么能把它放进去?
更新
我可以使用此代码
获取TableB所选行的ID$("#tableB tr:has(.New.selected)").map(function(){return $(this).data("fid");}).get();
现在我的逻辑是,
function RMToggle( elm ) {
var wantedFIDs = $("#tableB tr:has(.New.selected)").map(function(){return $(this).data("fid");}).get();
var ischecked = elm.checked,
$target = $('#table1 tr[data-id="' + elm.id + '"]');
if( ischecked ) {
// Here I want only rows in $target where data-fid = wantedFIDs
$target.show();
}
else {
$target.hide();
}
}
答案 0 :(得分:0)
试试这个:
$target= $("[data-id='" + wantedFIDs.split(",").join("'],[data-id='") + "']")
答案 1 :(得分:0)
我最终得到了这段代码,
function RMToggle(elm) {
$target = $('#tableA tr[data-id="' + elm.id + '"]').filter(function () {
var rowsFilter = $("#tableB tr .New.selected").parent().map(function () {
return $(this).data("fid");
}).get();
return rowsFilter.indexOf($(this).data("fid")) >= 0;
});
if (elm.checked) { $target.show(); }
else { $target.hide(); }
}