jQueryを使用してテーブル内の行を強調表示しようとしていますが、強調表示する行に変数を使用できるかどうか疑問に思っています。これは私が今持っているコードで、機能していません。
var rowNumber = 3 //I want to use a loop, but for testing purposes I have it set to 3
$('tr:eq(rowNumber)').addClass('highlight');
jQueryを使用してテーブル内の行を強調表示しようとしていますが、強調表示する行に変数を使用できるかどうか疑問に思っています。これは私が今持っているコードで、機能していません。
var rowNumber = 3 //I want to use a loop, but for testing purposes I have it set to 3
$('tr:eq(rowNumber)').addClass('highlight');
$('tr').eq(rowNumber).addClass('highlight');
あなたのために働くはずです。
まず、分離されたアクセスについて説明します(つまり、ループの最適化を考慮していません)
あなたは次のようなことを試すことができます
$('tr').eq(rowNumber).addClass('highlight');
説明:.eq(index)一致した要素のセットを、指定されたインデックスの要素に減らします。
ソース:http ://api.jquery.com/eq/
別の解決策:「:eq(index)」セレクターを使用します(不必要に遅く、冗長で複雑です)
$( "tr:eq(" + rowNumber + ")")。addClass('highlight');
3番目の解決策:(高速ですが、提案された解決策よりも冗長です)$($('tr')。get(rowNumber))。addClass('highlight');
これがどのように機能するか:$('tr')。get(rowNumber)は、クエリセレクターに一致する(rowNumber + 1)番目のDOM要素を取得し、周囲の$()を使用してjQueryの良さにラップされます。
詳細については、http://api.jquery.com/get/をご覧ください。
付属のjsFiddleを自由に試してみてください:http: //jsfiddle.net/FuLJE/
特にパフォーマンスを重視していて、実際に配列を反復処理する場合は、代わりにこれを行うことができます。
var trs = $('tr').get(); //get without arguments return the entire array of matched DOM elements
var rowNumber, len = trs.length;
for(rowNumber = 0; rowNumber < len; rowNumber++) {
var $tr = $(trs[rowNumber]);
//various stuff here
$tr.addClass('highlight');
//more stuff here
}
もちろん、.each()を使用することもできます
$("tr").each(function (rowNumber, tr) {
var $tr = $(tr);
//various stuff here
$tr.addClass('highlight');
//more stuff here
})
ドキュメントはここにあります:http://api.jquery.com/each/
明らかなことを指摘するだけです。$( "tr")。addClass('highlight')は、すべてのtrにハイライトクラスを追加するだけでOPが実行したい場合に機能します:-)