2011-03-31 65 views

回答

4
$('table').each(function() 
{ 
    var $table = $(this), 
     numTRs = $table.find('tr').length, 
     $tds = $table.find('td'), 
     numTDs = $tds.length; 

    if (numTRs === 1 && numTDs === 1 && $tds.html() === ' ') 
    { 
     $table.hide(); 
    } 
}); 

測試用例:http://jsfiddle.net/mattball/WhAcB/

+0

嗯..這似乎沒有工作要麼http://jsfiddle.net/loktar/tq3TQ/1/文本爲nbsp;顯示爲一個空白區域。 – Loktar 2011-03-31 14:30:40

+3

將'$ tds.text()===' ''更改爲'$ tds.html()===' '',它將起作用http://jsfiddle.net/markcoleman/6xGRM/1/ – 2011-03-31 14:32:22

+0

尼斯@Matt Ball +1和@Mark – Loktar 2011-03-31 14:36:41

0

這將根據規範工作,仍然是純粹的Jquery:

$('table tr:only-child td:only-child').filter(function() { 
     return $(this).html() === ' ';}).closest("table").hide(); 

什麼困擾我的是在表中的特殊字符。否則它會更簡單。

<table> 
    <tr> 
    <td>nbsp</td> 
    </tr> 
</table> 

<script type="text/javascript"> 
    $('table tr:only-child td:only-child:contains("nbsp")').closest("table").hide(); 
</script> 
+0

你可能會認爲這是可行的。但事實並非如此。 http://jsfiddle.net/loktar/tq3TQ/ – Loktar 2011-03-31 14:27:29

+0

這並不檢查包含恰好1''和1'​​'的表的條件。 – 2011-03-31 14:29:28

+0

「看起來像」與Exactly不一樣;-) – Guidhouse 2011-03-31 14:37:40

0

看一看在following

$('table').each(function() { 
    var $this = $(this); 
    var trCount = $this.find('tr').length; 
    var tdCount = $this.find('td').length; 

    if (trCount == 1 && tdCount == 1) { 
     var tdContents = $this.find('td:first').html(); 
     if (tdContents == '&nbsp;') { 
      setTimeout(function() { 
       $this.hide(); 
      }, 2000); 
     } 
    } 
});