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、テーブルには 5 つの行と列があります。基本的に、テーブルを反復処理しながら、現在の行と列の最初のセルを強調表示したいと考えています。

注:以下に投稿された回避策を見つけました。セレクターが動作しない理由にまだ興味があります。

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 に答える