18 Stimmen

JQuery Datatables: Überprüfen, ob das Datatables-Plugin initialisiert ist.

Ich möchte überprüfen, ob ein Tabellenelement mit beispielsweise der ID "datatable" datatables-initialisiert ist. So etwas wie:

if ($('#datatable').dataTable().initialized) {
  alert("initialisiert!");
}
else {
      alert("nicht initialisiert!");
    }

Wie kann ich das machen? Vielen Dank!

2 Stimmen

Was meinen Sie mit "initialisiert"?

0 Stimmen

Angenommen, ich habe mehrere Tabellen der Klasse "datatable". Sie alle sind initialisiert mit: $('.datatable').dataTable(); Dann füge ich dynamisch eine weitere Tabelle mit der Klasse "datatable" hinzu, die nicht initialisiert ist. Jetzt möchte ich durch alle Tabellen mit der Klasse "datatable" iterieren und basierend auf der Bedingung - ist dieses Tabellenelement initialisiert oder nicht - verschiedene Aktionen durchführen.

32voto

Moustafa Samir Punkte 2168

Sie können die fnIsDataTable-Funktion in jQuery-Datentabellen verwenden

var ex = document.getElementById('example');
if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
  $(ex).dataTable();
}

Weitere Informationen finden Sie unter api

0 Stimmen

Es scheint, dass dies die kanonische Methode für datatables > 1.9.1 sein sollte.

3 Stimmen

Ich glaube, dass dies als die richtige Antwort markiert werden sollte.

0 Stimmen

Sollte als richtige Antwort markiert werden. Vielen Dank

18voto

Alexey Lebedev Punkte 11632

Zunächst fügen Sie beim Initialisieren von Datatables einen speziellen Klassennamen hinzu:

$('.datatable').not('.initialized').addClass('initialized').dataTable()

Und jetzt können Sie sie anhand des Klassenamens unterscheiden:

alert( $('#datatable').hasClass('initialized') )

0 Stimmen

Tolle Idee. Danke!

7voto

Rajan Rawal Punkte 5943

Ich denke, folgendes ist die richtige Antwort darauf.

$(document).ready(function(){
    if (jQuery().dataTable) {
         // Ihr Code, um einige Detailkonfigurationen durchzuführen
    }
});

Zum Beispiel

$(document).ready(function(){
    if (jQuery().dataTable) {

            $.extend( $.fn.dataTable.defaults, {
                iDisplayLength : 200,
                aLengthMenu : [[100, 200, 300, -1], [100, 200, 300, "All"]],
            });
        }
});

Auf diese Weise sollten Sie in der Lage sein, mit if(jQuery().) zu überprüfen, ob eine Bibliothek geladen ist oder nicht.

1 Stimmen

Dies ist ein großartiger Ansatz für alle jQuery-Plugins.

2voto

ZX12R Punkte 4650

Datatable hat eine Methode, um zu überprüfen, ob ein Element als Tabelle initialisiert wurde oder nicht - $.fn.DataTable.fnIsDataTable

tableElement = document.getElementById('Ihre Tabellen-ID');
$.fn.DataTable.fnIsDataTable(tableElement); // gibt true oder false zurück

1voto

Shane Garelja Punkte 1428

Nachdem Sie .dataTable() aufgerufen haben, macht es etwas mit der Tabelle, das sie identifizierbar macht? Fügt es z.B. eine neue Klasse "initialised" oder etwas ähnliches hinzu? Wenn ja, können Sie einfach durch die Elemente wie folgt iterieren:

$('.datatable').each(
    function(index, element) {
        var _table = $(element);
        if (_table.hasClass('initialised')) {
            // Mach etwas
        } else {
            // Mach etwas
        }
    }
);

Entschuldigen Sie, wenn das nicht das ist, was Sie meinen. Es ist in Ihrer Frage nicht klar, was "dataTable()" tatsächlich macht.

3 Stimmen

Hey, danke für die Antwort. Ich habe vergessen zu erwähnen, dass es um das 'datatables' Plugin für jQuery geht, und ja, ich habe mir die gleiche Frage gestellt - wie man die Tabelle identifizieren kann, die mit datatables initialisiert wurde. Ich habe die Frage im datatables Forum gestellt und habe von Allan bekommen, was ich wollte: datatables.net/forums/comments.php?DiscussionID=4180&page=1. Trotzdem danke.

0 Stimmen

Die Methode cite von Frenzy wurde vom Autor des DataTables-Plugins entworfen; meiner Meinung nach ist es eine sehr gute Lösung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X