Помогите понять, почему происходит такое явление:
Я строю грид-таблицу и переопределяю обработчик события на кнопках переключения на другую страницу:
updateListContacts: function (p, r) {
$.ajax({
url: '/path/to/script',
dataType: 'JSON',
data: {page: p, rows: r},
type: 'POST',
success: function (data) {
if (typeof void null != typeof data['colmodel'] && data['colmodel'] != null &&
typeof void null != typeof data['rows'] && data['rows'] != null) {
grid = $('#ListContacts');
var cm = data['colmodel'];
var rdata = data['rows'];
$('#ListContacts').jqGrid("clearGridData");
grid.jqGrid({
jsonReader: {
repeatitems: false,
id: 'NodId'
},
datatype: 'local',
data: rdata,
colModel: cm,
rowNum: typeof void null != typeof data['rowNum'] && data['rowNum'] != null ? data['rowNum'] : 20,
pager: '#ListContactsPager',
gridview: true,
viewrecords: false,
page: typeof void null != typeof data['page'] && null != data['page'] ? data['page'] : 1
});
grid.jqGrid('setGridParam',{
data: rdata,
page: typeof void null != typeof data['page'] && null != data['page'] ? data['page'] : 1
}).trigger('reloadGrid');
var lp = Math.ceil(data['total'] / data['rowNum']);
$('#ListContactsPager .ui-icon-seek-first').click(function(){
updateListContacts(1, $('#ListContacts').jqGrid('getGridParam', 'rowNum'));
return false;
});
$('#ListContactsPager .ui-icon-seek-prev').click(function(){
updateListContacts($('#ListContacts').jqGrid('getGridParam', 'page') - 1, $('#ListContacts').jqGrid('getGridParam', 'rowNum'));
return false;
});
$('#ListContactsPager .ui-icon-seek-next').click(function(){
var np = $('#ListContacts').jqGrid('getGridParam', 'page') + 1;
if (np <= lp) {
updateListContacts(np, $('#ListContacts').jqGrid('getGridParam', 'rowNum'));
}
return false;
});
$('#ListContactsPager .ui-icon-seek-end').click(function(){
updateListContacts(lp, $('#ListContacts').jqGrid('getGridParam', 'rowNum'));
return false;
});
}
}
})
}
И вот что происходит: при первом нажатии на следующую или предыдущую страницу функция updateListContacts выполняется один раз, при втором нажатии - уже два раза, в третий раз - четыре раза выполняется, потом 8 и так далее...
Как заставить ее выполняться только один раз?