jQuery:查找每个隐藏的行

时间:2013-08-17 15:27:19

标签: jquery html-table hidden

这可以工作,但它也隐藏了每个第二行内每个单元格的顶部边框。我只想隐藏每个表的第一行隐藏顶部边框。否则它不应该隐藏任何东西。

我在这个页面上有4个表。

var validate = $("tr:nth-child(1)");

if (validate.is(":hidden")) {
    $("tr:nth-child(2) td").css("border-top-width", "0px");
}

以下是一个示例:http://jsfiddle.net/nBAgv/

3 个答案:

答案 0 :(得分:0)

尝试

$('table').each(function(){
    var validate = $("tr:nth-child(1)", this);

    if (validate.is(":hidden")) {
        $("tr:nth-child(2) td", this).css("border-top-width", "0px");
    }
})

答案 1 :(得分:0)

问题是你的倒数第二行为与选择器tr:nth-​​child(2)匹配的所有表行设置了该属性 - 这是每个表的第二行。

因此,您需要一种更具上下文感知的方法。我还没有测试过以下内容(应该可以使用),但这个概念是有效的。您需要获取隐藏的第1行父表,然后将.css(" border-top-width"," 0px")应用于 - 表 - 该表第二排。

$("tr:first-child").each(
     function(e) {
         if($(e).is(":hidden")) {
            $(e).parent().children("tr:nth-child(2)").css("border-top","0");
         }
     });

答案 2 :(得分:0)

认为我理解正确。不确定。对于附加每个隐藏行的下一行,您要删除该行中每个数据单元格的顶部边框。

如果是这种情况,请尝试这样做

$('table').each(function() {  
    $(this).find('tr').each(function() { 

        validate = $(this);

        if (validate.is(":hidden")) {
            $(validate).parent().find("tr:eq(1) td").css("border-top", "0px");
        } 
    });
});

对于每个表,找到行。然后为每一行检查它们是否被隐藏。如果他们找到下一个第一行并删除它的边框。

这是我的fiddle