2011-05-06 59 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/