Datatables.row() - undefined
Я хочу удалить строки, просто щелкнув соответствующую кнопку. таблицы данных работают, я могу использовать некоторую базовую функцию, например сортировку и поиск в datatable, но когда я нажимаю кнопку, она просто просто говорит undefined ошибка:
для вашей информации, im используя datatable 1.10 и jquery 1.10.2
![enter image description here]()
Код:
<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>
Ответы
Ответ 1
Это не работает, потому что существует огромная разница между конструктором dataTable()
и конструктором dataTable()
, представленным в 1.10.x(см. документы):
Разница между двумя заключается в том, что первый возвращает jQuery объект, а второй возвращает экземпляр API DataTables.
Просто измените
var table = $('#table').dataTable( {} );
к
var table = $('#table').dataTable( {} );
если вы хотите работать с новым API DataTables через переменную table
.
Посмотрите, как работает ваш код → http://jsfiddle.net/Sd6UQ/
Примечание. Не забудьте использовать <tr>
.. </tr>
и закрыть <td>
правильно. dataTables может быть очень чувствительным к неправильной разметке.
Ответ 2
если вы решили создать datatable на этом пути
table = $('# table'). dataTable ({})
вы получите объект jQuery в таблице var
но вы можете получить доступ к dataTable api со следующей инструкцией
table.api()
вы могли видеть, что он работает здесь
http://jsfiddle.net/Sd6UQ/
вы можете использовать этот Technic, если у вас нет доступа к инструкции создания данных
<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>
вы могли видеть, что он работает здесь
http://jsfiddle.net/r2ue74zn/
Ответ 3
Вы можете просто добавить следующий код для перезагрузки datatable
//var table = $('#table').dataTable( {} );
table.ajax.reload();