我试图选择表的第一行。注意:第一行被包装在一个标签中,所以:
<table> <thead> <tr> <!-- first row --> </tr> </thead> <tbody> <tr> <!-- body --> </tr> </tbody> <tfoot> <tr> <!-- body --> </tr> </tfoot> </table>
如果不是包装标签,则‘select first row’提示可以正常工作。这是我试过但不行的:
$("*:not(thead)",tableSelector).remove();
即,我想使用“not tfoot”选择器摆脱tbody和tfoot选择器。因为我想从表中删除所有其他内容,除了< thead>和一切都在里面。所以基本上我想要做的是选择除thead以外的所有内容; intutuively的东西像:not(thead *)可以工作,但不是。
我的解决方法是$(“tbody,tfoot”,tableSelector).remove();但我想学习和了解如何使用相反(非选择器)。
解决方法
你的问题不完全清楚。选择单个表中的第一行:
$("table tr:first")...
或相反:
$("table tr:not(:first)")...
会做到这一点,但是如果有多个表(即使有三个表也只会选择一行),那么它就会中断。你可以解决这个问题:
$("table").each(function() { $(this).find("tr:first")... });
您可以在THEAD中获取所有行:
$("table > :not(thead) > tr")...
编辑:我觉得你过度复杂了。如果你想删除除THEAD及其内容之外的所有内容,那就比较简单:
$("table > :not(thead)").remove();
如果您想将TBODY和TFOOT元素放在适当位置,请更改为:
$("table > :not(thead) > tr").remove();