jQuery";选择“除”之外的所有选项;

jQuery";选择“除”之外的所有选项;,jquery,jquery-selectors,Jquery,Jquery Selectors,我正在尝试选择表的第一行。注意:第一行用thead标记包装,因此: <table> <thead> <tr> <!-- first row --> </tr> </thead> <tbody> <tr> <!-- body --> </tr> </tbody> <tfoot> <tr> <

我正在尝试选择表的第一行。注意:第一行用
thead
标记包装,因此:

<table>
  <thead>
    <tr>  <!-- first row --> </tr>
  </thead>
  <tbody>
    <tr>  <!-- body --> </tr>
  </tbody>
  <tfoot>
    <tr>  <!-- body --> </tr>
  </tfoot>
</table> 
也就是说,我想使用“not-tfoot”选择器去掉tbody和tfoot选择器。因为我想删除表中除了
和AD中的所有内容之外的所有其他内容。所以基本上我要做的就是选择所有的东西,除了thead和它里面的东西;直觉上,像
:not(thead*)
这样的东西可以工作,但不能


我的解决方法是
$(“tbody,tfoot”,tableSelector).remove()但我想学习和理解如何使用相反的(而不是选择器)。

你的问题不太清楚。要选择单个表中的第一行,请执行以下操作:

$("table tr:first")...
或者反过来说:

$("table tr:not(:first)")...
将执行此操作,但如果有多个表(即使有三个表,它也只选择一行),则此操作将中断。您可以通过以下方式解决此问题:

$("table").each(function() {
  $(this).find("tr:first")...
});
您可以通过以下方式获取AD中未包含的所有行:

$("table > :not(thead) > tr")...
编辑:我认为你把事情复杂化了。如果要删除除THEAD及其内容之外的所有内容,这相对简单:

$("table > :not(thead)").remove();
如果要保留TBODY和TFOOT元素,请将其更改为:

$("table > :not(thead) > tr").remove();
在表选择器上使用将仅选择直接子项。您可以使用not选择器对此进行筛选

$(tableSelector).children(':not(thead)').remove();
我正在尝试选择表的第一行

为什么不使用好的旧DOM

mytable.rows[0]
如果要删除除
表外的任何
,请尝试此选择器:

table > *:not(thead)

编辑因为您指出您已经在变量中包含了表:

$("> *:not(thead)", context)
“:not”伪选择器接收另一个选择器作为参数,因此您实际上可以删除除此之外的所有内容,例如:

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

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

I将类似于:

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

不清楚你想在这里做什么。你能重新措辞吗?
“tbody,tfoot”
在这里似乎是最好的。事实上,在我充分阅读你的问题之前,我一直打算提出这个建议。要点是:
:not(thead)
失败,因为它还选择并删除了
tr
。因此没有“thead及其子对象”这样的选择器,所以我可以说:not(thead及其子对象);@Martin:
thead
及其子对象将是
thead,thead>*
@Gubmo no,“:not(thead,thead>*)”仍然会以某种方式匹配所有内容并删除所有内容。实际上,此解决方案比仅使用选择器的解决方案慢30倍。是否要解释一下?我的简单测试表明,您的解决方案在1000次迭代中平均需要400ms,而我的解决方案在相同的1000次迭代中平均需要300ms多一点……请注意,在我的测试中,出于明显的原因,我做的是隐藏/显示,而不是删除。我的测试用例如下所示:第一个“选择器”,在Firefox 3.5.5(W32)上大约需要1500ms,而第二个“儿童”需要约45000毫秒。等等。。。请注意,现在我再次运行它,您的children方法大约快1.2倍。我道歉。好的,说清楚。选择第一行及其名称。因为我想删除表中除了
和AD中的所有内容之外的所有内容。同样,我想使用conetxt说明符$(xx,上下文)否。。这也行不通。它移除了一切。到目前为止,只有“tbody,tfoot”似乎有效。@Martin:上下文真的只是你的表吗?像
$(“table”)
?对不起,输入错误->上下文=$(“#xx”)我想让THEAD出现,这样普通的行就不会剪切它。此外,我想从表中删除所有其他内容,所以只选择行不会让我有任何用处。
$('table thead  tr:first-child')