2012-01-23 42 views
3

我有一個表有幾行,每行有兩列,第一列將持有標題和第二列將具有各自的值。有時,右側的單元格可能沒有值,所以只有標題沒有任何價值是沒有意義的。我可以隱藏左側單元格上沒有右側或整個行本身的值的標題。隱藏行,如果它包含空列

我想出了這一點,但它不工作..

$('.EventDetail tr').each(function(){  
     if(!$('td:not(:empty)',this).length)   
     $(this).hide(); 
}); 

下面是表。我想知道標籤是否有所作爲。或者其中一個有一個班,另一個不應該導致它無法工作?

<table cellpadding="10" class ="EventDetail"> 
    <tr> 
     <td class="TableFields"><em>Who Should Enroll?:</em></td> 
     <td>Everyone 18 and older who would like to attend</td> 
    </tr>  
    <tr> 
     <td class="TableFields"><em>Handicapped Access:</em></td> 
     <td>Yes</td> 
    </tr> 
    <tr> 
     <td class="TableFields"><em>Parking Notes:</em></td> 
     <td></td> 
    </tr> 
    <tr> 
     <td class="TableFields"><em>Instructor:</em></td> 
     <td>John Filler</td> 
    </tr> 
</table> 

所以沒有停車位指出的信息,所以我想隱藏包含標題「停車注意到左邊的單元格」

+1

嘗試http://stackoverflow.com/a/8970914/1132744 – ori

回答

0

試試這個:

$('.EventDetail tr').each(function(){  
    if ($('td:empty',this).length > 0)) 
    $(this).hide(); 
}); 
0

你的選擇會導致在你的例子中if語句永遠不會是真的$("td:not(:empty)")總是選擇帶有標題的<td>元素,所以長度始終爲1if(!1)永遠不會是真的

您應該刪除雙重否定(!:not)以使其更清晰,然後檢查長度(即匹配元素的數量)是> 0

0

你可以試試這個:

$(document).ready(function(){ 
    $('.EventDetail tr').each(function(){  
     if ($(this).children().not('.TableFields').text().length == 0) 
      $(this).hide(); 
    }); 
}); 
3

我認爲這將工作:

$('.EventDetail tr').has('td:nth-child(2):empty').hide() 

,您可以嘗試在jsFiddle

+0

太棒了,這很不錯。 –