3

私はDataTablesを使用しており、行と列の強調表示を可能にするために、このやや恥ずかしいJavascriptを一緒にハッキングしました。これは、このページ( http://datatables.net/release-datatables/examples/api/highlight.html )の例に基づいています。

dataTable構成の関連部分は次のとおりです。

$(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');
            }、 働き() {
                $('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デバッグ能力の限界にあります。回答があれば、それを見つけるために行ったデバッグプロセスについても説明していただければ幸いです。

4

1 に答える 1

3

次の行の問題のように見えます

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

以下に変更すると、問題が解決するはずです。

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

問題は$('td')、ドキュメント内のすべてのTDを取得することですが、現在の行に対してのみ取得する必要があります。

于 2012-11-22T02:38:08.467 に答える