0

我正在使用 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');
}
4

2 回答 2

3

我不熟悉在同一个选择器中使用多个:eq(),但我认为您的选择器

html > body > table tr:eq(3) > td:eq(0)

正在寻找文档范围内的第四次出现html > body > table tr它只会给你一个 tr元素,然后找到它tr的第一个td孩子。如果我理解:eq()正确,那么td即使您有多个表格,那也只会产生一个元素。

鉴于您的结构,您可能只需替换:eq():nth-child()并且:first-child不受以下情况限制:eq()

html > body > table tr:nth-child(4) > td:first-child

还有一些建议:您可以删除该位,因为它是多余的,如果您有嵌套表,则在您的和避免匹配顶级表中的任何嵌套行/列之间html >添加 a 会很有帮助:> tbody >tabletr

body > table > tbody > tr:nth-child(4) > td:first-child
于 2013-09-01T09:53:43.967 回答
0

除了迭代,别无选择:

$("html > body > table").each(function(){
$(this).find("tr:eq(3) > td:eq(0)").addClass("jquery_green");
});
于 2013-09-01T09:45:25.993 回答