0

我在让 jquery 过滤器方法工作时遇到问题。

如果我有

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

div“resultDiv”中包含表的所有行都被赋予了备用行类。

但是,如果我使用

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

它似乎不匹配任何元素,并且没有应用任何类。

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

我错过了什么?

4

3 回答 3

5

使用第二个选择器,您可以选择具有 id 的元素#resultDiv并对其应用过滤器。但它可能不是一个集合,只是一张桌子什么的。

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

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

这样,您将拥有一个tr应用过滤器的集合。

于 2012-05-02T05:35:17.350 回答
4

在您的第一个版本中:

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

.filter() 从集合中删除不匹配的元素,并且您的#resultDiv元素都不是tr,因此过滤器不匹配任何内容。

尝试:

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

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

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

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

于 2012-05-02T05:39:08.957 回答
2

我猜这#resultDiv是所有<tr>'s 的父母,所以我认为你想要这个:

$('#resultDiv tr').filter(":odd").addClass("alternate_row");
于 2012-05-02T05:34:48.617 回答