运行 一个小部件在 list.js 的触发事件中不起作用
Running a widget doesn't work from a fired event of list.js
我正在尝试 运行 事件处理程序中的小部件。
出于某种原因,小部件未在事件处理程序函数内触发。
此事件属于 List.js,小部件是 paging.js。
var userList = new List('users', options);
userList.on('searchComplete', function () {
$('#testTable').paging({limit:5});
});
$('#testTable').paging({limit:5});
$('#testTable').paging({limit:5});
行在搜索完成后会被激活 - 但由于某些原因它不会 运行。
JSFiddle 示例:
有帮助吗?
调用 $('#testTable').paging({limit:5});
创建小部件但不更新它。通常你应该只调用一次这种小部件,并使用方法来修改它。
在您的情况下,您可以定义一个更新小部件的函数。这将是 _getNavBar()
和 showPage()
方法的一种组合。例如:
$.widget('zpd.paging', $.zpd.paging, {//this is to add a method to the widget,
// but the method could also be defined in the widget itself
updatePaging: function () {
var num = 0;
var limit = this.options.limit;
var rows = $('.list tr').show().toArray();
var nav = $('.paging-nav');
nav.empty();//you empty your navbar then rebuild it
for (var i = 0; i < Math.ceil(rows.length / this.options.limit); i++) {
this._on($('<a>', {
href: '#',
text: (i + 1),
"data-page": (i)
}).appendTo(nav), {
click: "pageClickHandler"
});
}
//create previous link
this._on($('<a>', {
href: '#',
text: '<<',
"data-direction": -1
}).prependTo(nav), {
click: "pageStepHandler"
});
//create next link
this._on($('<a>', {
href: '#',
text: '>>',
"data-direction": +1
}).appendTo(nav), {
click: "pageStepHandler"
});
//following is basically showPage, so the display is made according to the search
for (var i = 0; i < rows.length; i++) {
if (i >= limit * num && i < limit * (num + 1)) {
$(rows[i]).css('display', this.options.rowDisplayStyle);
} else {
$(rows[i]).css('display', 'none');
}
}
return nav;
}
});
然后调用搜索事件更新。像这样:
userList.on('searchComplete', function () {
$('#testTable').paging('updatePaging');
});
我正在尝试 运行 事件处理程序中的小部件。
出于某种原因,小部件未在事件处理程序函数内触发。 此事件属于 List.js,小部件是 paging.js。
var userList = new List('users', options);
userList.on('searchComplete', function () {
$('#testTable').paging({limit:5});
});
$('#testTable').paging({limit:5});
$('#testTable').paging({limit:5});
行在搜索完成后会被激活 - 但由于某些原因它不会 运行。
JSFiddle 示例:
有帮助吗?
调用 $('#testTable').paging({limit:5});
创建小部件但不更新它。通常你应该只调用一次这种小部件,并使用方法来修改它。
在您的情况下,您可以定义一个更新小部件的函数。这将是 _getNavBar()
和 showPage()
方法的一种组合。例如:
$.widget('zpd.paging', $.zpd.paging, {//this is to add a method to the widget,
// but the method could also be defined in the widget itself
updatePaging: function () {
var num = 0;
var limit = this.options.limit;
var rows = $('.list tr').show().toArray();
var nav = $('.paging-nav');
nav.empty();//you empty your navbar then rebuild it
for (var i = 0; i < Math.ceil(rows.length / this.options.limit); i++) {
this._on($('<a>', {
href: '#',
text: (i + 1),
"data-page": (i)
}).appendTo(nav), {
click: "pageClickHandler"
});
}
//create previous link
this._on($('<a>', {
href: '#',
text: '<<',
"data-direction": -1
}).prependTo(nav), {
click: "pageStepHandler"
});
//create next link
this._on($('<a>', {
href: '#',
text: '>>',
"data-direction": +1
}).appendTo(nav), {
click: "pageStepHandler"
});
//following is basically showPage, so the display is made according to the search
for (var i = 0; i < rows.length; i++) {
if (i >= limit * num && i < limit * (num + 1)) {
$(rows[i]).css('display', this.options.rowDisplayStyle);
} else {
$(rows[i]).css('display', 'none');
}
}
return nav;
}
});
然后调用搜索事件更新。像这样:
userList.on('searchComplete', function () {
$('#testTable').paging('updatePaging');
});