2016-07-11 8 views
1

まず、私はちょうどバインドは再びソート機能

$("button.disable-sorting").click(function(){ 
    $("table thead th").off("click.DT"); 
}); 

により、テーブルヘッダーでソートを無効にすることができ、今私の問題は、テーブルのヘッダーにソートをバックバインドする方法ですが、私は

を試してみました
$("button.restore-sorting").click(function(){ 
    $("table thead th").bind("click.DT"); 
}); 

でも動作していないようです。 datatablesテーブルのヘッダーのソート機能をバインドする方法に関するヘルプアイデアはありますか?

PS:DataTableの1.10.12

+0

の可能な重複が[jqueryののDataTableを使用して、ソートカラムを無効] (http://stackoverflow.com/questions/3932587/disable-a-column-sorting-using-jquery-datatables) – theinarasu

+0

@theinarasu:いいえ、彼の問題は、私が初期化/クリックイベントの後にデータセットの初期化中です。 –

+0

@ CodeDemonの場合、イベントハンドラをbindステートメントに追加してみてください。 –

答えて

2

上のイム私は右initilization後に元のイベントリスナーを格納します。 I以下の例では、配列マップeventsにそれらを保存することで、非常に最初の<th>のすべてのイベントを保存する:

var table = $('#example').DataTable({ 
    initComplete: function() { 
    $.each($._data($('#example thead th')[0], 'events'), function(name, obj) { 
     events[name] = obj[0] 
    }) 
    } 
}) 

は今、あなたは、フォーム上の「ネイティブ」のDataTableイベントのマップを持って

events['click'] => old event handler 
events['keypress'] => old event handler 
... 

そして、特定のヘッダー(またはすべてのヘッダー)の並べ替え(および他のdataTablesイベントドリブン機能)のオン/オフを切り替えることは本当に簡単です。ここ/無効ボタンを有効にすると小さなデモである:

//remove original event listeners, add alternative 
$("#disable").click(function() { 
$("#example thead th:nth-child(1)") 
    .unbind() 
    .bind('click', function() { 
     alert('all listeners removed') 
    }) 
}) 
//restore any original event 
$("#enable").click(function() { 
    var $th = $("#example thead th:nth-child(1)") 
    $th.unbind() 
    for (var name in events) { 
    $th.bind(name, events[name]) 
    } 
}) 

デモ - >http://jsfiddle.net/8sbcage4/(禁止/最初のヘッダのためのDataTableイベントをイネーブル)

+0

ありがとう、魅力のように働く! :) –

関連する問題