2014-07-03 19 views
19

Ich möchte Zeilen löschen, indem Sie einfach auf verwandte Schaltfläche klicken .. Datentabellen funktioniert, kann ich einige grundlegende Funktion wie Sortieren und suchen in Datentabelle, aber wenn ich auf die Schaltfläche nur klicken einfach gesagt undefiniert Fehler:Datatables .row() ist undefined

zu Ihrer Information, im Datentabelle 1.10 und jquery 1.10.2 enter image description here

Code verwendet:

<table cellpadding="0" cellspacing="0" border="0" class="row-border" id="table"> 
<thead> 
    <th>Video ID</th> 
    <th>Filename</th> 
    <th>Action</th> 
</thead> 
<tbody> 
    <td>1</td> 
    <td>ABCD</td> 
    <td><input type='button' name='deleteBtn' value='Delete' /> 
</tbody> 
<tfoot> 
    <tr> 
     <th>Video ID</th> 
     <th>Filename</th> 
     <th>Action</th> 
    </tr> 
</tfoot> 
</table> 

<script src="jquery.min.js"></script> 
<script src="jquery.dataTables.min.js"></script> 
<script type="text/javascript"> 
var table = $('#table').dataTable({}); 

$('#table tbody').on('click',"input[type='button']",function() { 
    table 
     .row($(this).parents('tr'))** 
     .remove() 
     .draw(); 
}); 
</script> 
</body> 
</html> 
+0

setzen Sie Ihr Skript in $ neu zu laden (document) .ready (function {}); –

Antwort

50

Es funktioniert nicht, weil es einen großen Unterschied zwischen dem dataTable() Konstruktor und der DataTable() Konstruktor in 1.10.x eingeführt (see docs):

Der Unterschied zwischen den beiden ist, dass der erste Wille gibt ein jQuery-Objekt zurück, während das zweite Objekt eine DataTables-API-Instanz zurückgibt. ändern

Einfach

var table = $('#table').dataTable({}); 

zu

var table = $('#table').DataTable({}); 

wenn Sie auf der neuen Datentabellen API durch die table Variable arbeiten.
Code Arbeits Siehe ->http://jsfiddle.net/Sd6UQ/

NB: Denken Sie daran, <tr> .. </tr> und in der Nähe <td> ‚s richtig zu nutzen. Datatables können sehr empfindlich auf fehlerhafte Markierungen reagieren.

+1

Der Übersichtlichkeit halber ist der Unterschied zwischen 'dataTable()' mit einem Anfangsbuchstaben (alt) und 'DataTable()' mit einem Anfangsbuchstaben (neu). Ich erwähne es ausdrücklich, als ich es beim ersten Mal übersehen habe ... :-) –

+0

Gute Antwort! Zeitersparnis . –

0

wenn Sie sich entscheiden, die Datentabelle auf diese Weise

table = $ ('# table') zu erstellen. Datatable ({})

finden Sie ein jQuery-Objekt in der Tabelle var erhalten aber Sie können auf die DataTable API mit der folgenden Anweisung zugreifen

Tabelle.api()

Sie es hier läuft

http://jsfiddle.net/Sd6UQ/

sehen konnte

Sie könnten verwenden, die Technik, wenn Sie keinen Zugriff auf die Datentabelle Erzeugungsbefehl haben

<script> 
    //datatable creation is in another file 
    //$('#table').dataTable({}) 

    $("button[name'deleteBtn']").click(function(){ 
     var row = $(this).closest("tr"); 
     var table = row.closest('table').dataTable(); 
     table.api() 
      .row(row) 
      .remove() 
      .draw(); 
    }) 
<script> 

man konnte es sehen, hier zu arbeiten

http://jsfiddle.net/r2ue74zn/

0

Sie können einfach den folgenden Code in Datentabelle

//var table = $('#table').dataTable({}); 
table.ajax.reload();