[英]jQuery “select all except”
我想选择一个表的第一行。 注意:第一行包含在thead
标记中,因此:
<table>
<thead>
<tr> <!-- first row --> </tr>
</thead>
<tbody>
<tr> <!-- body --> </tr>
</tbody>
<tfoot>
<tr> <!-- body --> </tr>
</tfoot>
</table>
如果不是包装器标签, “选择第一行”提示可以工作。 这是我尝试但不起作用的:
$("*:not(thead)", tableSelector).remove();
也就是说,我想使用“非tfoot”选择器摆脱tbody和tfoot选择器。 因为除了<thead>
和所有内部之外,我想从表中删除其他所有内容。 所以基本上我要做的就是选择除了thead之外的所有东西以及它里面的东西; 滔滔不绝地说: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();
在表选择器上使用children()将仅选择直接子项。 您可以使用非选择器过滤此内容。
$(tableSelector).children(':not(thead)').remove();
我想选择一个表的第一行。
为什么不使用好的旧DOM呢?
mytable.rows[0]
如果你想删除任何的孩子一个table
,除了thead
,试试这个选择:
table > *:not(thead)
编辑因为您指出您已在变量中拥有该表:
$("> *:not(thead)", context)
我会像:
$('table thead tr:first-child')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.