2011-05-06 56 views
0

我有两个表。第一个是高一行,包含7个tds。jquery通过条件选择表中的最后一个单元格

第二个是6行高,包含7个tds。

当用户单击第一个表中的td时,对应列中具有类“x”的表2中的最后一个单元删除了类“x”并添加了类“y”。当点击相同的列中,所述细胞它上面将具有类“X”除去和类“y”的添加,等等,以便下一次

...

我已成功地选择相应的列使用一个插件,可以让你选择“第n-COL”

$('#table1 td').click(function(){ 

    var col = ($(this).index()+1); 

    $('#table2 td:nth-col('+col+')').removeClass('x').addClass('y'); 

}); 

但只是无法弄清楚如何选择行!

如果你想知道什么我去上大约那么基本上进出口试图使连接四

+0

我认为应该是'第n个孩子()'和'不是第n-COL()' – Mottie 2011-05-06 13:01:57

回答

2

你可以没有任何插件。按照相反的顺序遍历行,检查第N个td元素。在找到第一个后,从循环中退出。这是一个简单的解决方案,但可能没有正确优化以处理数千行/列。 :)

现场演示:http://jsfiddle.net/yydZ3/1/

//Set all classes to x 
$('td').addClass('x'); 

$('td').click(function(){ 
    var $this = $(this); 
    var col = $this.index(); 

    //Iterate through rows in reverse order 
    $($('tr').get().reverse()).each(function(){ 
     var $cell = $(this).find('td:eq('+col+')'); 
     if($cell.hasClass('x')){ 
      //Found one, this must be the last in this column 
      $cell.removeClass('x').addClass('y'); 

      //Exit out of each loop 
      return false; 
     } 
    }); 
}); 
1

,选择适当的tr(行),那么td元素(小区):

$('#table2 tr:eq('+row+') td:eq('+col+')').removeClass('x').addClass('y'); 

看到一个非常基本的测试:http://jsfiddle.net/MgTGf/1/