2010-01-04 68 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。