Sto cercando un modo per sapere se le tabelle in una pagina sono DataTable o no? C'è un modo semplice per trovarlo? O potrebbe essere se riesco a ottenere tutti gli oggetti di DataTable.C'è un modo per scoprire che una tabella nella pagina è un oggetto dataTable?
risposta
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.
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
}
});
È 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
.
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!
Quel trucco funzionerà ma stavo cercando una soluzione più robusta. – emphaticsunshine
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 . –
In realtà sto cercando l'oggetto dataTable in modo che possa richiamare alcune funzioni su di esso. – emphaticsunshine