我正在尝试使用 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) 将匹配元素集减少到指定索引处的元素。
替代解决方案:使用 ":eq(index)" 选择器(不必要地更慢、更冗长和复杂)
$("tr:eq("+rowNumber+")").addClass('highlight');
第三种解决方案:(速度快,但比建议的解决方案更详细)$($('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/
只是指出显而易见的:如果OP想要做的就是将突出显示类添加到所有tr,那么 $("tr").addClass('highlight') 会起作用:-)