为什么我可以选择第n个子单元格,但不能选择表格中的第n个子行?

时间:2013-06-07 16:50:32

标签: javascript jquery

为什么这样做:

var t = j+1;
$("#mapTable tr:first-child td:nth-child(" + t + ")").addClass("target");

但是在相同的代码中(紧接在下面),这不是:

t= i+1;
$("#mapTable tr:nth-child(" + t + ") td:first-child").addClass("target");

在我正在测试的简单示例i == j == 2中,表中有五行和一列。基本上,我想突出显示同一行和列中的第一个单元格,就像我现在正在迭代表格一样。

注意:我找到了一份工作,发布在下面。仍然对选择器不表现的原因感兴趣。

1 个答案:

答案 0 :(得分:0)

感谢堆栈溢出,我找到了this回答,

有一个更简单的方法来处理没有jQuery的表,我的问题的解决方案是使用这样的函数:

(在创建表格的for循环中)

for(var i=0; i < test1; i++)
{
    tr = $("<tr />");
    for(var j=0; j < test2; j++)
    {
        td = $("<td />");
        if(matchConditionIsMet(i,j))
            matchArr = [i,j];
        td.appendTo(tr);
    }
    tr.appendTo("#mapTable");
}

(循环执行后)

i = matchArr[0];
j = matchArr[1];
var targ = document.getElementById("mapTable").rows[0].cells[j];
$(targ).addClass("target");

targ = document.getElementById("mapTable").rows[i].cells[0];
$(targ).addClass("target");

在我花了几分钟时间试图重新发明轮子之后,我发现答案存在于Javascript,sans库的核心。

它仍然无法解决为什么nth-child()有时会起作用的谜题,而不是其他时间,但更实际的是,它为我提供了一种标记目标单元格的行标题和列标题的方法。 / p>

希望这能为别人带来一些麻烦。