转换选择表行

时间:2011-05-31 19:07:49

标签: javascript jquery

我知道这个问题已被问过很多,但我找不到确切的答案。 这是我的代码。基本上我已经完成了所有设置。我只是迷失在哪里通过索引获取表的行。我已经尝试过.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');    
            });
        }

这可能不是最好的方法。

1 个答案:

答案 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');