2012-05-09 2 views
2

Я близок к тому, чтобы потерять рассудок. Я работаю над проектом для крупной компании в их рамках. Они в значительной степени полагаются на jQuery.datatables plugin, что неплохо, но документация кажется мне очень плохой и запутанной, а исходный код очень трудно понять.jQuery Плагин DataTables - где происходит смена страницы

Краткая версия: Мне нужно знать, как подключиться к событию с измененной страницей, поэтому я могу выполнить код, когда это произойдет.

Длинная версия: у меня есть массив данных json для размещения в таблице, элементы не имеют уникальный идентификатор; поэтому перед отправкой его в dataTable я добавлю идентификатор столбца, который заполняется индексом элемента в массиве и создаст для него столбец. После того, как я вызываю fnUpdate, я скрываю столбец индекса и добавляю событие click для каждой строки, используя значение в этом столбце, чтобы узнать, какой json-объект соответствует этой строке. Это некрасиво, но это работает, пока я не сменю страницы; в то время все еще скрыто, но они снова появляются. Мне нужно найти, как подключиться к событию смены страницы, чтобы я мог скрыть их снова, или мне нужен более элегантный способ сделать тот же обман.

Спасибо за ваше время

ответ

2

Вы можете использовать fnDrawCallback или fnInfoCallback для обнаружения изменений. При следующем нажатии на оба они запускаются.

Но будьте осторожны, изменения страниц не являются единственным источником, который может активировать эти обратные вызовы.

Или вы могли бы попробовать что-то вроде этого:

$('.dataTables_length select').live('change', function(){ 
    alert(this.value); 
}); 
+0

спасибо, я попробую его немного. Не могли бы вы рассказать мне, могу ли я добавить fnDrawCallback другим способом, чтобы это не было в вызове инициализации таблицы? что-то вроде $ ('# dataTables'). fnDraCallBack (function() {...}); –

3

Вы можете слушать на «странице» событие, которое излучается DataTable например: http://datatables.net/docs/DataTables/1.9.1/DataTable.html#page

Так что вы могли бы сделать что-то вроде:

$(myTableInstance).bind('page', function() { 
    pagingFunction(); 
}); 
+0

спасибо, это наверняка сработает. Я не мог найти в своих документах способ использовать его так, спасибо за пример. На данный момент я буду поддерживать решение Фархана Амада, я думаю, что он больше подходит для моего проекта –

Смежные вопросы