2013-06-27 15 views
5

當用戶點擊列標題進行排序時,我想激發自己的事件。我不想讓它排序。我一直在做研究,並沒有看到一個好的方法來做到這一點。想要在嘗試排序數據表時觸發自定義事件

我可以綁定排序事件做我自己的東西,但排序仍然發生。我不想要這個。如果我禁用排序,那麼排序事件永遠不會觸發,所以這也不起作用。

我可以禁用排序,然後嘗試捕獲標題上的點擊事件,但我希望有一個更好的方法來做到這一點。有人有主意嗎?

回答

11

很簡單。您只需取消綁定click.DT處理程序並添加自己的。你不必禁用排序。

例如

<table id="example"> 
<thead> 
    <th id="id">ID</th> 
    <th id="username">Username</th> 
</thead> 
<tbody> 
    <tr><td>1</td><td>A test</td></tr> 
    <tr><td>2</td><td>B test</td></tr> 
    </tbody>  
</table> 

的JavaScript

$(document).ready(function(){ 
    //init datatables 
    var table = $('#example').dataTable(); 

    //unbind sort event, prevent sorting when header is clicked 
    $('#example th').unbind('click.DT'); 

    //create your own click handler for the header 
    $('#example th').click(function(e) { 
     alert('Header '+$(this).attr('id')+' clicked'); 
     //here you can trigger a custom event 
    }); 

    //if you afterwards want to restablish sorting triggered by a click event 
    //here header "username" from example above 
    table.fnSortListener(document.getElementById('username'), 1); 
}); 

注意:沒有專門的 「排序」 -event在數據表。艾倫賈丁提到它可能會在未來的版本2. http://datatables.net/forums/discussion/5141/capturing-sort-event-on-table-heading/p1

+0

解除綁定不起作用。它仍在排序。 – user1652427

+0

嗯。你使用哪個版本的數據表?在這裏工作,1.9.xx – davidkonrad

+0

有趣,必須是特定版本。使用'.unbind('...')'對我很好。但是,使用'fnSortListener(...'不會重排到列的排序。 –

相關問題