我正在使用jQuery选择器来显示所选内容。 $(selector).addClass('jquery_green');
//选择所有表格(有效)
html > body > table
//选择第二个表,第四行,第一列(有效)
html > body > table:eq(1) tr:eq(3) > td:eq(0)
//选择所有表格,第四行,第一列(不起作用)你能告诉我什么是错的吗?
html > body > table tr:eq(3) > td:eq(0)
我发现的唯一选择(非常愚蠢):
var baseSelector = "html > body > table";
var selector = "tr:eq(3) > td:eq(0)";
$(".jquery_green").removeClass("jquery_green");
var index;
for (index = 0; index < 10000; ++index) {
sel = baseSelector + ":eq(" + index + ") " + selector;
$(sel).addClass('jquery_green');
}
答案 0 :(得分:3)
我不熟悉在同一个选择器中使用多个:eq()
,但我认为你的选择器
html > body > table tr:eq(3) > td:eq(0)
正在查找html > body > table tr
文档范围的第四个出现,它只会为您提供一个 tr
元素,然后找到{{} 1}}的第一个tr
孩子。如果我正确理解td
,那么即使您有多个表格,也只会产生一个:eq()
元素。
根据您的结构,您可以将td
替换为:eq()
和:nth-child()
,而:first-child
和:eq()
不会像html > body > table tr:nth-child(4) > td:first-child
那样限制:
html >
还有一些建议:您可以删除> tbody >
位,因为它是多余的,如果您有嵌套表,在table
和{{之间添加tr
会很有帮助1}}以避免匹配顶级表中的任何嵌套行/列:
body > table > tbody > tr:nth-child(4) > td:first-child
答案 1 :(得分:0)
除了迭代之外别无选择:
$("html > body > table").each(function(){
$(this).find("tr:eq(3) > td:eq(0)").addClass("jquery_green");
});