2013-07-10 47 views
1

我有一個網站,有很多在它的數據表中,我有以下的代碼頁的頭: -隱藏不工作時表存在

$(function() { 
$("td[colspan=3]").find("P").hide(); 
}); 

當我主表有一個<P> test </P>在那裏它正確地隱藏了這個(我有一個按鈕,然後顯示這個,我知道工程)。

但是,如果我進入一個子表放入之間的普的那個表像這樣

<td colspan="3"> 
    <P> 
     <table> 
      <tr><td>1</td><td>2</td></tr> 
      <tr><td>3</td><td>4</td></tr> 
     </table> 
    </P> 
</td> 

表不隱藏...我缺少什麼?我也試過

$("td[colspan=3]").find("P").find("table").hide(); 

但沒有骰子這裏要麼...

+0

給這個「td」一個「Id」。 – Praveen

+0

@Praveen不知道你的意思是向td添加一個ID,哪個td? – MorkPork

回答

4

這是原因,因爲你有一個invalide HTML。

<p>標記內部不能包含其他塊,它是一個具有塊屬性的文本標記。一旦連衣裙將標籤懸停在<p>的內部,它會自動關閉<p>並對新標籤進行操作。

如果您在此檢查dom:http://jsfiddle.net/pqJTZ/,您會看到<p>爲空。

解決方法是使用<div>代替。

This answer給你很好的鏈接和正確的解釋。

+0

這是對的! 如果你還想隱藏表格: ... .find(「p」)。next(「table」)。hide(); – reyaner

+1

這是正確的,這裏的小提琴與div而不是p http://jsfiddle.net/guybrushthreepwood/6qS4w/ – Mir

+0

reyaner和karls解決方案的工作,非常感謝給我一個過多的選項工作! :) – MorkPork