2012-01-19 6 views

risposta

2
if($('table').parents('.dataTable_wrapper').length>= 1) { 
do something... 
} 

È un po 'un trucco, ma non esiste ancora un modo nativo per verificare un'istanza datatable. Questo è qualcosa che ho appena appreso ieri.

+0

Quel trucco funzionerà ma stavo cercando una soluzione più robusta. – emphaticsunshine

+0

Questa soluzione proviene da questo thread nel forum dei dati, http: // datatables.net/forums/discussion/7748/check-if-dom-table-is-datatable-instance/p1, la risposta è arrivata dal creatore dei data-information stesso, quindi sfortunatamente non penso ci siano molti altri modi per farlo . –

+0

In realtà sto cercando l'oggetto dataTable in modo che possa richiamare alcune funzioni su di esso. – emphaticsunshine

11

C'è un metodo statico nel plugin DataTable, quindi si può verificare come:

$('table').each(function() { 
    // this method accepts the DOM node (table element) as parameter 
    if ($.fn.dataTable.fnIsDataTable(this)) { 
     // do your thing to the table 
    } 
}); 
2

È possibile ottenere tutte le tabelle della pagina che sono DataTable in un colpo solo con. Il codice per DataTable 1.10 sarebbe:

$.fn.dataTable.tables() 

Ecco il doc per esso. Ciò restituirà una matrice di elementi DOM . Se si desidera ottenere le istanze di API DataTable che sono associati con loro, si può fare:

var tables = $.fn.dataTable.tables(); 
var datatables = $(tables).DataTable(); 

Nota che, anche se chiamare .DataTable() come sopra può creare una nuova istanza API DataTable e di conseguenza inizializzare il vostro tavolo, se il Gli elementi DOM per i quali il metodo è chiamato già hanno le proprie istanze (l'API è già stata creata e inizializzata), la chiamata sarà non creare nuove istanze. In altre parole, il codice sopra non inizializzerà nuovamente le tue tabelle.

L'oggetto datatables è un'istanza API che controlla l'intera collezione di tabelle. La chiamata delle funzioni API su questa istanza controllerà tutte le tabelle contemporaneamente. Adattare un esempio dalla documentazione, questo codice:

datatables.page('next').draw(false); 

renderebbe tutte le tabelle saltano alla loro pagina successiva (se esiste).

Nelle versioni precedenti alla 1.10, la funzione equivalente era $.fn.dataTable.fnTables.

Roy Ling ha menzionato $.fn.dataTable.fnIsDataTable che può essere utilizzato per verificare le tabelle singolarmente. Naturalmente, in 1.10 è ancora possibile testare le tabelle singolarmente quando necessario, la funzione è $.fn.dataTable.isDataTable.

0

So che potrebbe essere un po 'di tempo da quando questa domanda è stata pubblicata, ma come stavo ponendo la stessa domanda io stesso, sono venuto a questa soluzione dal riferimento DataTable site.

Ecco come verificare se #example è un DataTable o meno. In caso contrario, inizializzare:

if (! $.fn.DataTable.isDataTable('#example')) { 
    $('#example').dataTable(); 
} 

Spero che questo aiuti qualcuno!

Problemi correlati