我知道这个问题已被问过很多,但我找不到确切的答案。
这是我的代码。基本上我已经完成了所有设置。我只是迷失在哪里通过索引获取表的行。我已经尝试过.index函数,但我没有用。我正在尝试做$('#pkgLineTable').index(i).addClass('row_selected');
但这不正常。任何帮助都会很棒。非常感谢你。
var lastSelected;
$('#pkgLineTable tr').live('click', function(event) {
var tableRow = $(this).closest("tr").prevAll("tr").length + 1;
if ($(this).hasClass('row_selected')) {
$(this).removeClass('row_selected');
}
else {
$(this).addClass('row_selected');
}
if (event.shiftKey) {
var table = $('#pkgLineTable');
var start = Math.min(tableRow, lastSelected);
var end = Math.max(tableRow, lastSelected);
for (var i = start; i < end; i++) {
//$(this).parent().parent().addClass('row_selected');
}
} else {
lastSelected = $(this).closest("tr").prevAll("tr").length + 1;
}
我的开始和结束值是正确的。如果选择2行和5行,则返回2和5.然后迭代2 - 5.我需要在行2 - 5中添加一个类。
编辑我用过这个:
for (var i = start; i < end; i++) {
$('#pkgLineTable').each(function() {
$(this).find("tr").eq(i).addClass('row_selected');
});
}
这可能不是最好的方法。
答案 0 :(得分:5)
而不是
for (var i = start; i < end; i++) {
//$(this).parent().parent().addClass('row_selected');
}
使用
table.find('tr:gt('+(start-1)+'):lt('+(end)+')').addClass('row_selected');