объект DataTable() и объекта DataTable() - в чем разница и как мне заставить их работать вместе?

подавляющее большинство документации для этого плагина указывает, что вы инициализируете его с помощью

$('#example').dataTable();

однако http://www.datatables.net/examples/api/multi_filter_select.html инициализирует использование

$('#example').DataTable();

результирующие объекты отличаются довольно много, и пример URL выше не работает, когда я инициализирую с строчным "D", однако в значительной степени все остальное требует нижний регистр 'D' инициализация.

может кто-нибудь объяснить мне, почему есть разница, и как сделать эти два играть хорошо вместе? По сути, мне нужна функциональность с несколькими фильтрами, но также нужно прикрепить некоторые другие вызовы / Плагины, которым, похоже, не нравится инициализация верхнего регистра "D".

1 ответов


в основном, двумя constructurs возвращать разные объекты.


конструктор 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) до сих пор работает. Так что к вашему беспокойству:

по существу мне нужна функциональность multi-filter-select, но также нужно привязать некоторые другие вызовы / плагины, которые, похоже, не нравятся инициализация верхнего регистра 'D'.

как вы видите, вы можете сделать оба! Инициализируйте dataTables старым способом и используйте .api() когда вам нужен доступ к новому API.


почему так много официальных примеров используют dataTable ()?

Ну, вы не нужно использовать DataTable конструктор. Если вы не используете новый API, нет причин использовать DataTable constructur. Олдскул dataTable конструктор не рекомендуется. DataTables-это в основном работа одного человека. Это огромная задача поддерживать и развивать и, очевидно, очень много времени, чтобы поддерживать огромный веб-сайт с форумом, руководствами, тоннами примеров и так далее. Это только догадка, но я предполагаю, что Аллан Жардин к настоящему времени только изменились dataTable to DataTable там, где это действительно необходимо, просто потому, что он не может сделать все это за один шаг.