2

これが私が学ぼうとした質問です

同じ列のセルを取得するjQueryセレクター

インデックスとn番目の子を使用した回答が提案される前は、$(this)セルの前のセル数を数えるという方針に沿って考えていました。

var columnNo = parentRow.nextUntil($(this),"td").length;
console.log(columnNo); // gives 0 - what am I missing?
parentTable.find("tr td:nth-child(" + (columnNo+1) + ")")

http://jsfiddle.net/mplungjan/JUt4F/

質問:

  1. nextUntilが前のセルの長さを示さないのはなぜですか?

2.クリックが1回だけ機能するのはなぜですか?

私は(これを尋ねる前に)インデックスを使用できることを知っていることに注意してください。nextUntilを探索するためにスクリプトを修正したかっただけです

更新:私はnextAllとnextUntilを混ぜているようで、おそらくある種のnextAllUntilを想像していました

4

1 に答える 1

2

このnextUntil()メソッドはtd、親行の最初のタグを検索します。このロジックでは、各行の最初のセルのみを選択します。クリックは毎回機能します。同じ列を何度も赤く着色している​​だけです。

親行のすべてのタグを検索しtd、jQueryのindex()メソッドを使用して、その行でクリックされたセルの位置を特定する必要があります。

非常に小さな調整で問題が解決します。

$("td").on("click",function(){
    var parentTable = $(this).closest("table");
    var parentRow = $(this).parent();
    console.log(parentRow);
    var columnNo = parentRow.find('td').index($(this));
    console.log(columnNo);
    parentTable.find("tr td:nth-child(" + (columnNo+1) + ")")
        .css("color", "red");
});​

実例: http: //jsfiddle.net/JUt4F/15/

于 2012-12-28T06:46:55.207 に答える