2013-08-17 78 views
0

這可以工作,但它也隱藏每個第二行內每個單元格的頂部邊框。我只希望它隱藏頂部邊框,如果每個表的第一行被隱藏。否則,它不應該隱藏任何東西。jQuery:查找每一個隱藏行

我在這個頁面有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/

回答

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"); 
    } 
}) 
+0

謝謝阿倫。這不起作用。 – Smurfman82

+0

@ Smurfman82這是你在找什麼http://jsfiddle.net/arunpjohny/bV7Hc/1/ –

+0

這在小提琴中工作,但不在我的網頁上。我相信手頭可能還有另一個問題。 – Smurfman82

0

的問題是,你的倒數第二行設置該屬性的匹配選擇TR ALL錶行:第n個孩子(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"); 
     } 
    }); 
+0

仍然隱藏每一行。 :( – Smurfman82

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

+0

這部分工作,謝謝你們的幫助 – Smurfman82

+0

讓我知道這個問題,我很高興通過。 –