2010-01-04 61 views
3

只做沿隱藏TR的 - 邊界被列入

$("tr.myclass").hide(); 

線將隱藏相關行的東西。但是,如果我對tr中包含的td有邊界,那麼它們在tr隱藏後仍然顯示。因此,原始表在td元素的底部有一個1px邊框。隱藏行集合的地方會導致兩個像素邊框替代它們。

我假設這是因爲tr被隱藏而不是td,所以邊界仍然存在。然而,這應該不重要,tr中包含的所有內容都應該隱藏起來。

我對這個問題有點失落,因爲互聯網上沒有人似乎遇到過它,至少不是我的搜索標準。

任何想法?

編輯

好了,試試吧,同時使用<col /><colgroup></colgroup>,你會發現它是可再現的。我的同事告訴我擺脫col和colgroups和嘿presto,它工作正常。這是在IE8中(我不是一個IE用戶,但這是一個IE瀏覽器項目)。很奇怪。

+0

你能發佈一個示例HTML標記嗎? – rahul 2010-01-04 12:43:59

+0

當一個父元素被隱藏時,所有的子元素也將被隱藏。 – rahul 2010-01-04 12:45:16

+0

@脈衝:事實上,這是所期望的效果,我認爲到現在爲止是真實的。 – Kezzer 2010-01-04 12:46:42

回答

3

邊框不屬於單元格,而是屬於表格並在單元格之間顯示。隱藏該行將隱藏單元但不刪除它們,因此單元格之間的邊界仍然存在。

表不打算以這種方式使用,如果您隱藏表的某些部分,它將表現不正常或出乎意料。當您隱藏元素時,表格結構不會更改,因此表格不會顯示爲隱藏元素不存在。如果你想從表格中刪除表格行,你必須從表格中刪除tr元素。

2

我試着用下面的代碼重現此:

<html> 
<style> 
td { border: 1px solid black; } 
</style> 
<body> 
<table> 
    <tr id="row1"><td>Row 1</td></tr> 
    <tr id="row2"><td>Row 2</td></tr> 
    <tr id="row3"><td>Row 3</td></tr> 
</table> 
<p>Hide row 2</p> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script> 
$(function(){ 
    $('p').click(function(){$('#row2').hide();}); 
}); 
</script> 
</body> 
</html> 

邊框與TD元素內容隱藏沿。

+0

您隱藏了所有行,而不是它們的子集。如果我隱藏所有的行,那很好。 – Kezzer 2010-01-04 14:12:30

+0

我添加了更多的行並只隱藏其中的一個 - 邊界仍然與行內容一起被隱藏。 – 2010-01-04 14:16:33

+0

檢查我的編輯,我發現了爲什麼。 – Kezzer 2010-01-04 14:26:44

0

我遇到過類似的問題。當隱藏或者刪除一個tr時,表頭的左邊界是'leacking'到下面的tds。