2012-11-22 63 views
3

我使用的數據表,並一起砍死這個有點尷尬的Javascript功能來讓行和列高亮高亮顯示了。它基於此頁上的示例(http://datatables.net/release-datatables/examples/api/highlight.html)。列和行與數據表

這裏的數據表結構的相關部分:

$(document).ready(function() { 
    $('#franchise_history').dataTable({ 
     "bPaginate": false, 
     "bLengthChange": false, 
     "bFilter": true, 
     "bSort": false, 
     "bInfo": true, 
     "bAutoWidth": true, 
     "sScrollY": "100%", 
     "sScrollX": "100%", 
     "asStripeClasses": [], 
     "fnInitComplete": function (conf, json) { 
      var tbl = $($.fn.dataTable.fnTables(true)).dataTable(); 
      $('td', tbl.fnGetNodes()).hover(function() { 
       var iCol = $('td').index(this) % some_constant; 
       var nTrs = tbl.fnGetNodes(); 
       $('td:nth-child('+(iCol+1)+')', nTrs).addClass('highlighted'); 
      }, function() { 
       $('td.highlighted', tbl.fnGetNodes()).removeClass('highlighted'); 
      }); 
     } 
}); 
});

some_constant由服務器上的模板代碼插入。這是列數。這裏是DataTables調試輸出:http://debug.datatables.net/oceqix,這裏是它的派生頁面http://pro-football-history.com/franchise/37/pittsburgh-steelers-coaches

正如你所看到的,懸停在列上並不能正確顯示右欄。這裏有什麼問題?當談到Javascript時,我非常無能,而且我基本上處於JavaScript調試能力的極限。如果有任何答案也解釋了他們通過調試過程來找到它,我將不勝感激。

+1

嘗試使用完全一樣的,你舉的例子中的完成代碼。您做了幾項導致無法使用的更改。 – GreyBeardedGeek

回答

3

看起來像下面這行

var iCol = $('td').index(this) % some_constant; 

更改爲下面的問題應該可以解決你的問題:

var iCol = $('td', this.parentNode).index(this) % some_constant; 

的問題是,$('td')給你所有TD在文檔中,但你需要只爲當前行獲取它們。