2013-07-10 52 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