2013-06-27 7 views
5

Quando l'utente fa clic sull'intestazione di una colonna per ordinare, desidero licenziare il mio evento. NON lo voglio ordinare. Ho fatto ricerche e non vedo un buon modo per farlo.Vuoi attivare un evento personalizzato quando provi a ordinare in Datatables

Posso legare l'evento di ordinamento per fare le mie cose, ma il genere si verifica ancora. Non voglio questo. Se disattivo l'ordinamento, l'evento di ordinamento non si attiva mai, quindi anche questo non funziona.

È possibile disabilitare l'ordinamento e quindi provare a catturare gli eventi di clic sull'intestazione, ma speravo che ci sarebbe stato un modo migliore per farlo. Qualcuno ha qualche idea?

risposta

11

Molto facile. Devi semplicemente smistare il gestore click.DT e aggiungere il tuo. Non devi disabilitare l'ordinamento.

esempio

<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); 
}); 

Nota: Non v'è alcun dedicato "sort" -Event in DataTable. Allan Jardine menziona che potrebbe venire in una versione futura 2. http://datatables.net/forums/discussion/5141/capturing-sort-event-on-table-heading/p1

+0

Lo slegamento non funziona. Sta ancora selezionando. – user1652427

+0

hmm. Quale versione di datatables stai usando? Ha funzionato qui, 1.9.xx – davidkonrad

+0

Quanto è divertente, deve essere specifico per la versione. Usare '.unbind ('...')' funziona alla grande per me. Tuttavia, l'uso di 'fnSortListener (...' non sta riconciliando l'ordinamento con la colonna. –

Problemi correlati