jquery选择器全选

时间:2013-09-01 09:42:36

标签: javascript jquery jquery-selectors

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

2 个答案:

答案 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");
});