为什么这样做:
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
中,表中有五行和一列。基本上,我想突出显示同一行和列中的第一个单元格,就像我现在正在迭代表格一样。
注意:我找到了一份工作,发布在下面。仍然对选择器不表现的原因感兴趣。
答案 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>
希望这能为别人带来一些麻烦。