区分在同一个foreach循环中创建的多个HTML表

时间:2017-05-23 18:58:22

标签: jquery html

我有一个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>

1 个答案:

答案 0 :(得分:2)

而不是重复id,而是使用类。 Ids应该是唯一的,重复它们是无效的标记。因此,当您创建表时,请执行类似的操作。

<table class="myTable">

然后我们假设您在表格中有一个按钮来显示/隐藏它。

<input type="button" class="hideMe" value="Hide Me">

然后当你绑定时,你可以将你的逻辑基于点击的按钮来获得它所属的表。

$('.hideMe').on('click', function(){
    $(this).closest('.myTable').hide();
});

这是一个简单的逻辑,但希望它传达了这个概念。

供参考:http://api.jquery.com/closest/