繁体   English   中英

jQuery“select all except”

[英]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]

“:not”伪选择器接收另一个选择器作为参数,因此您实际上可以删除除此之外的所有内容,如下所示:

$(':not(thead, thead *)', 'table').remove();

你可以在这里看到它

这与您在评论中写的内容非常相似,除了您没有使用上下文(删除了表节点)并且您使用了在thead中不包含“所有内容”的子操作数,而是仅包括它直接的孩子。 删除子操作数“>”将排除所有节点的后代,而不仅仅是直接子节点。

如果你想删除任何的孩子一个table ,除了thead ,试试这个选择:

table > *:not(thead)

编辑因为您指出您已在变量中拥有该表:

$("> *:not(thead)", context)

我会像:

$('table thead  tr:first-child')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM