http://www.datatables.net/
jQuery datatables是一个添加过滤器、分页和搜索输入的插件。我一直在使用它们和我的Laravel应用程序一起将数据放入,它运行得很好。
我现在添加了一个与数据表分离的下拉过滤器,并添加了一些jQuery代码,如下所示:
$('.dropdownselect').change(function() {
$('.table').find('tr').remove();
$.post('/schedules', { value: $(this).val() }, function(result) {
$.each(result, function(k, v) {
$('.table-body').append('<tr><td>' + v.name + '</td></tr>');
});
});
});
它只是在更改时删除值,并将schedules
路由返回的新值附加到表中。实际上还有4个<td>
,但为了简化起见,我只包含了一个。
当使用上面的代码时,它不维护datatables插件的功能。
为什么会这样?有办法绕过它吗?或者更好的方法?
仅仅通过AJAX请求向DOM添加新行不会通知DataTables对象容器这些更改。您需要使用Datatable.row.add()
来插入行,然后重新绘制表,以直观地更新显示的表,从而考虑到这些新数据。
请尝试以下操作。
$('.dropdownselect').change(function() {
$('.table').find('tr').remove();
var t = $('.table').DataTable();
$.post('/schedules', { value: $(this).val() }, function(result) {
$.each(result, function(k, v) {
t.row.add( [v.name, v.otherParam, v.anotherParam] );
});
t.draw();
});
});