#jquery #function #datatables
#jquery #функция #таблицы данных
Вопрос:
Я использую плагин jQuery DataTables для отображения больших наборов данных. Одна вещь, которую я пытаюсь сделать, это сократить столбец «детали» (иногда они составляют около 1000 символов) до небольшой строки, чтобы все строки были одинаковой высоты и их было легче читать. Затем, когда пользователь нажимает на маленькую строку, открывается диалоговое окно и отображается полная информация.
Это отлично работает, но только для первых 10 строк (поскольку это все, что отображается по умолчанию). Как только я разворачиваю таблицу для отображения остальных строк, функция, похоже, не применяется к этим вновь показанным строкам. Есть ли в таблицах данных вызов или параметр, который будет применять функцию каждый раз, когда отображается отображаемый набор строк?
Вот вызов DataTables:
$('#dataTable').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"fnInitComplete": function(){
$('.display_results').show();
$('.def').click(function(){
var msg = $(this).next().text();
$('.messages').messageBox();//Custom Dialog box call
});
}
});
Ответ №1:
Понял это! http://datatables.net/usage/callbacks используйте ‘fnDrawCallback’
$('#dataTable').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"fnInitComplete": function(){
$('.display_results').show();
},
"fnDrawCallback": function() {
$('.def').click(function(){
var msg = $(this).next().text();
$('.messages').messageBox()//Custom Dialog
});
}
})
Комментарии:
1. спасибо за ваш ответ. я застрял на той же проблеме с 1 дня.
2. но у меня есть еще одна проблема: события на 2-й странице не работают в первый раз, когда я перехожу на страницу. чтобы заставить их работать, я возвращаюсь на первую страницу, а затем перехожу на 2-ю страницу, после чего она работает. что-нибудь, чтобы это исправить?
Ответ №2:
Я думаю, вы могли бы использовать свойство «fnDrawCallback» при объявлении «DataTable», как мы использовали в нашем недавнем проекте.
Ответ №3:
Лучше всего использовать живые события для такого рода вещей: http://datatables.net/faqs#events . В идеале подключаемый модуль MessageBox можно изменить для использования живых событий.
Аллан
Ответ №4:
На самом деле то, что вы должны были сделать, это:
$(".def").live('click', function() {
//your code here
});
Комментарии:
1.
.live()
устарело, вы должны использовать.on()
вместо этого.