如何解决仅在主表中选择tr,而不在嵌套表中选择
| 之前已经问过这个问题,请参阅:jQuery在主表中仅选择tr / td,而不在嵌套表中选择。但是对于我来说,它没有解决方案。 $(\"#tablePartners tr:odd\").addClass(\"odd\");
$(\"#tablePartners tr:even\").hide();
$(\"#tablePartners tr:first-child\").show();
$(\"#tablePartners tr.odd\").click(function(){
$(this).next(\"tr\").toggle();
$(this).find(\".arrow\").toggleClass(\"up\");
});
该代码对于在表上切换行非常有效,但是,当我在表中嵌套表时,它会中断:
<table id=\"tablePartners\">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Address</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href=\"#\">Partner Name</a></td>
<td>Random description</td>
<td>1 Random Street</td>
<td><div class=\"arrow\"></div></td>
</tr>
<tr>
<td colspan=\"4\">
<table>
<tr>
<td><b>Phone</b></td>
<td>0123456789</td>
</tr>
<tr>
<td><b>Contact Name</b></td>
<td>Jamie</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
我已尝试执行此操作,以将事件仅应用于父级,而不应用于嵌套表(如另一个问题线程中所建议),但这没有用:
$(\"#tablePartners>tbody>tr:odd\").addClass(\"odd\");
$(\"#tablePartners>tbody>tr:even\").hide();
$(\"#tablePartners>tbody>tr:first-child\").show();
$(\"#tablePartners>tbody>tr.odd\").click(function(){
$(this).next(\"tr\").toggle();
$(this).find(\".arrow\").toggleClass(\"up\");
});
编辑:不工作,我的意思是:切换事件不起作用,并且奇数行未隐藏。在第一个javascript中,切换有效,并且奇数行被隐藏,但是嵌套表的奇数行也被隐藏,这是我不想要的。
我认为这一定是微不足道的,但是我有洞察力。
我把它放在jsfiddle上:http://jsfiddle.net/9eJ8y/2/
解决方法
问题在于,第一个代码还会选择标题行。不会使用
tbody
,也就是说,您少了一行。您可以切换odd
和even
来产生相同的效果:
$(\"#tablePartners > tbody > tr:even\").addClass(\"even\");
$(\"#tablePartners > tbody > tr:odd\").hide();
$(\"#tablePartners > tbody > tr:first-child\").show();
$(\"#tablePartners > tbody > tr.even\").click(function(){
$(this).next(\"tr\").toggle();
$(this).find(\".arrow\").toggleClass(\"up\");
});
演示
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。