Я пытаюсь перейти на конкретную страницу в initComplete:
var table = $('#example').dataTable( {
"initComplete": function( settings, json ) {
table.page(5).draw(false);
}
} );
Но это не работает. Моя страница по-прежнему находится на странице 1.
Проблема с вашим кодом в том, что table
не определен в вашем контексте обратного вызова.
Единственное, что я нашел в своем небольшом исследовании, это то, что вы можете получить API таблицы из параметра настроек.
https://datatables.net/forums/discussion/34352/passing-datatable-object-to-initcomplete-callback
так что, возможно, это могло бы работать так:
var table = $('#example').DataTable( {
"initComplete": function( settings, json ) {
settings.oInstance.api().page(5).draw(false);
}
});
хотя я не пробовал
У вас есть две проблемы:
.DataTable
, а не .dataTable
initComplete
бежит, .DataTable({})
не вернулся, поэтому table
не определеноЭто можно подтвердить с помощью:
"initComplete": function (settings, json) {
console.info(table);
//table.page(5).draw(false);
}
Однако в initComplete
вы можете использовать this
, поэтому вам не нужна переменная table
.
Изменение на .DataTable
и this
и ваш код работает нормально:
$('#example').DataTable({
"pageLength": 2,
"initComplete": function(settings, json) {
$(this).DataTable().page(5).draw(false);
}
});
<link href = "https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/jquery.dataTables.min.css" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
<table id = "example" class = "display">
<thead>
<tr>
<th>Company name</th>
<th>Address</th>
<th>Town</th>
</tr>
</thead>
<tbody>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
<tr>
<td>Emkay Entertainments</td>
<td>Nobel House, Regent Centre</td>
<td>Lothian</td>
</tr>
<tr>
<td>The Empire</td>
<td>Milton Keynes Leisure Plaza</td>
<td>Buckinghamshire</td>
</tr>
</tbody>
</table>
Попробовал для вас, работает отлично: jsfiddle.net/ke0cjz6L