jquery筛选器选择器与筛选器方法

jquery筛选器选择器与筛选器方法,jquery,Jquery,我在让jquery筛选器方法工作方面遇到了问题 如果我有 $("#resultDiv tr:odd").addClass("alternate_row"); div resultDiv中包含表的所有行都被赋予了alternate row类 但是如果我使用 $('#resultDiv').filter("tr:odd").addClass("alternate_row"); 它似乎与任何元素都不匹配,并且没有应用任何类 我需要使用filter方法,因为我正在做一些传递变量的其他事情 我遗漏了

我在让jquery筛选器方法工作方面遇到了问题

如果我有

$("#resultDiv tr:odd").addClass("alternate_row");
div resultDiv中包含表的所有行都被赋予了alternate row类

但是如果我使用

 $('#resultDiv').filter("tr:odd").addClass("alternate_row");
它似乎与任何元素都不匹配,并且没有应用任何类

我需要使用filter方法,因为我正在做一些传递变量的其他事情

我遗漏了什么?

我猜resultDiv是所有“的父项”,所以我想你想要这个:

$('#resultDiv tr').filter(":odd").addClass("alternate_row");

使用第二个选择器选择id为resultDiv的元素,并对其应用过滤器。但它可能不是一个收藏,只是一张桌子或其他东西

您必须选择tr元素并像这样对它们应用过滤器

$('#resultDiv tr').filter(":odd").addClass("alternate_row");
这样,您将有一个tr集合来应用过滤器。

在您的第一个版本中:

$'resultDiv'.filtertr:odd.addClassalternate\u行

.filter从集合中删除不匹配的元素,并且您的resultDiv元素都不是tr,因此筛选器不匹配任何内容

尝试:

显式添加与tr:odd选择器匹配的新子代节点,或

$('#resultDiv tr').filter(":odd").addClass("alternate_row");

它使用单个选择器查找所有tr元素,然后使用.filter只选择奇数元素。

如果您试图添加类以进行样式设置(如zebra striping),并且不必支持较旧的浏览器,您还可以查看CSS3第n个子选择器。不幸的是,我们必须支持较旧的浏览器,这就是为什么我选择这样做的原因way@DanielPowell你的问题是什么?因为第一个选择器显式查找子代tr节点。筛选器不会找到新节点,它只会减少当前匹配的节点集。
$('#resultDiv tr').filter(":odd").addClass("alternate_row");