0

为什么会这样:

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表中有五行和五列。基本上,我想在遍历表格时突出显示与我现在所在的行和列中的第一个单元格。

注意:我找到了解决方法,发布在下面。仍然对选择器不工作的原因感兴趣。

4

1 回答 1

0

感谢梳理堆栈溢出,我找到了这个答案,

有一种更简单的方法可以在没有 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 的核心,无库。

它仍然没有解决为什么nth-child()有时有效而其他时候无效的谜团,但更实际地说,它为我提供了一种标记目标单元格的行标题和列标题的方法。

希望这可以为某人节省一些麻烦。

于 2013-06-07T16:50:31.603 回答