0

这有效,但它也隐藏了每第二行内每个单元格的顶部边框。如果每个表的第一行被隐藏,我只希望它隐藏顶部边框。否则它不应该隐藏任何东西。

我在这个页面上有 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/

4

3 回答 3

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");
    }
})
于 2013-08-17T15:29:50.610 回答
0

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

因此,您需要一种更具上下文感知能力的方法。我没有测试以下(应该工作),但这个概念是有效的。您需要获取隐藏的第一行父表,然后将您的 .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");
         }
     });
于 2013-08-17T15:35:24.780 回答
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");
        } 
    });
});

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

这是我的小提琴

于 2013-08-17T15:55:50.220 回答