微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅在主表中选择tr,而不在嵌套表中选择

如何解决仅在主表中选择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 举报,一经查实,本站将立刻删除。