我有一个HTML循环,可以根据唯一编号创建多个表(创建一个唯一编号的表,获取下一个唯一编号,创建下一个表等等)。表头有一个下拉列表,可以过滤特定表中的结果。当我只有一个表时,过滤器工作正常(.hide / .show对需要过滤的行)。如果有多个表,(这是我有点困惑并需要一些指导),它似乎正在查看错误的表中的过滤信息,并删除了所有表的所有表数据。
仅举例来说,我有两个表在#34;路由号码"的相同标签中创建。 (' RN' 1表和' RN 2表),每个表由该唯一路由号码内的银行和银行信息组成。 (例如:' RN' = 1,'银行'下降=阿克伦,辛辛那提,克利夫兰 - 所以,如果我选择辛辛那提,我应该只看到辛辛那提银行信息 - 其他行应该是隐藏),但看起来好像所有东西都被过滤到了#.hide'。
有没有办法区分使用相同的表ID创建的多个表,for循环中的类?
这是我的"隐藏/显示"代码:
function hideRIDRows() {
$('#table2ID tbody tr').show();
var sel_rid = $('select[name="RID"] option:selected').text();
if (sel_rid == '-- Routing ID List --') {
return;
}
$('#table2ID tbody tr').each(function () {
var col_rid = $(this).find('td').eq(2).text();
if (col_rid !== sel_rid) {
$(this).hide();
}
});
}
编辑:我包括表逻辑(仅基本信息 - 因为银行机密和所有;)
<table style="margin-bottom:20px" class="table2" id="table2ID">
@{
bool col = false;
routingNo= "";
List<string> RoutingNos = new List<string>();
int count = 0;
<thead>
@foreach (var item in Model.Where(t => t.RoutingID == Convert.ToInt32(p)))
{
if (routingNo!= item.RoutingID.ToString())
{
count = Model.Where(t => t.RoutingID== Convert.ToInt32(p)).Count() + 1;
routingNo= item.RoutingID.ToString();
<tr>
<th colspan=@count>Routing ID: @routingNo</th>
</tr>
}
<tr>
<th colspan=@count>
<select name="RID" id ="RouteID" style="width:150px" class="routing">
<option style="text-align:center" value="">-- Routing ID List --</option>
@foreach (string city in OrderedCityList)
{
<option id="selection">@city</option>
}
</select>
</th>
</tr>
</thead>
<tbody class="tbody2" id="tbody2ID">
@foreach (var city in OrderedCityList)
{
<tr>
***BANK INFO
}
</tr>
}
</tbody>
}
}
</table>
答案 0 :(得分:2)
而不是重复id,而是使用类。 Ids应该是唯一的,重复它们是无效的标记。因此,当您创建表时,请执行类似的操作。
<table class="myTable">
然后我们假设您在表格中有一个按钮来显示/隐藏它。
<input type="button" class="hideMe" value="Hide Me">
然后当你绑定时,你可以将你的逻辑基于点击的按钮来获得它所属的表。
$('.hideMe').on('click', function(){
$(this).closest('.myTable').hide();
});
这是一个简单的逻辑,但希望它传达了这个概念。