2011-05-31 56 views
1

我知道这个问题已经被问了很多,但是我确实没有确定的答案。 这是我的代码。基本上我已经设置了一切。我只是失去了索引获取表的行的位置。我试过了.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');  
      }); 
     } 

这可能不是最好的办法。

回答

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'); 
+0

感谢的人。我会尝试一下。检查我的编辑。我发布这个之后,我确实发现了一些东西。 – 2011-05-31 19:21:50

+0

刚刚尝试过该代码。这是选择一个通过我点击的最后一个。我试着弄乱了代码。它工作稍微。不工作的地方,但我需要它。 – 2011-05-31 19:24:23

+0

如果它选择比需要多1,则使用'(end-1)' – devmatt 2011-05-31 19:30:38