我遇到了使jquery过滤器方法起作用的问题。
如果我有
$("#resultDiv tr:odd").addClass("alternate_row");
包含表的div“resultDiv”中的所有行都被赋予备用行类。
但是,如果我使用
$('#resultDiv').filter("tr:odd").addClass("alternate_row");
它似乎与任何元素都不匹配,并且没有应用任何类。
我需要使用filter方法,因为我正在做一些传递变量的其他事情。
我错过了什么?
答案 0 :(得分:5)
使用第二个选择器,您选择标识为#resultDiv
的元素并对其应用过滤器。但它可能不是一个集合,只是一张桌子或其他东西。
您必须选择tr
元素并对其应用过滤器;
$('#resultDiv tr').filter(":odd").addClass("alternate_row");
这样您就可以使用tr
集合来应用过滤器。
答案 1 :(得分: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
仅选择奇数元素。
答案 2 :(得分:2)
我猜#resultDiv
是所有<tr>
的父母,所以我想你想要这个:
$('#resultDiv tr').filter(":odd").addClass("alternate_row");