Ответ 1
В принципе, два конструктора возвращают разные объекты.
конструктор dataTable
var table = $(<selector>).dataTable()
dataTable
- это oldschool dataTables constructur, который возвращает объект jQuery. Этот объект jQuery обогащен набором методов API в венгерском формате нотации, например fnFilter
, fnDeleteRow
и т.д. Полный список методов API здесь. Примеры:
table.fnDeleteRow(0);
table.fnAddData(['E', 'F']);
dataTable
поддерживается всеми версиями 1.9.x/ 1.10.x.
Конструктор DataTable
var table = $(<selector>).dataTable()
Конструктор DataTable был введен в 1.10.x и возвращает огромный объект API с полным доступом для чтения/записи к страницам, строкам, ячейкам и т.д., см. руководство. Пример эквивалентности:
table.row(0).remove();
table.row.add(['E', 'F']).draw();
Объединение dataTable и DataTable
Если вы сохраняете старый код или по какой-то причине должны использовать конструктор oldschool dataTable, но все равно нужно использовать новый API, объект jQuery расширяется (от 1.10.0) с помощью .api()
, который возвращает новый API. Пример эквивалентности:
var table = $('#example').dataTable();
table.api().row(0).remove();
table.api().row.add(['E', 'F']).draw();
Старый API, как table.fnDeleteRow(0)
, все еще работает. Итак, к вашему беспокойству:
По сути, мне нужна функция выбора нескольких фильтров, но также нужно использовать некоторые другие вызовы/плагины, которые, похоже, не похожи инициализация "D" в верхнем регистре.
Как вы видите, вы можете сделать оба! Инициализировать dataTables старый путь и использовать .api()
, когда вам нужен доступ к новому API.
Почему так много официальных примеров использует dataTable()?
Ну, вам не нужно использовать конструктор dataTable
. Если вы не используете новый API, нет причин использовать конструктор dataTable
. Конструктор oldschool dataTable
не устарел. Таблицы данных в основном работают с одним человеком. Это огромная задача для поддержания и развития и, очевидно, очень много времени для поддержки огромного веб-сайта с форумами, руководствами, примерами и т.д. Это только предположение, но я предполагаю, что теперь Аллан Жардин изменил dataTable
на dataTable
там, где это действительно необходимо, просто потому, что он не может сделать все за один шаг.