我使用 jQuery 1.8.0 编写了一个自定义分页方案。我将事件处理程序绑定到后退和前进按钮。要在第 1 页禁用后退按钮,我使用 .off() 函数来禁用绑定。当我向上翻页时,我在按钮上调用 .on() 以再次启用绑定。当我三次更改事件绑定的开/关状态时,就会出现问题。之后,该事件将不再触发。
下面是我的代码的精简版本。这将说明我的问题。
这就是事件。后退按钮的 id 为 prevPageLink。
$("#prevPageLink").click( function() {
// Decrement the current page
global_currentPage--;
// Check to see if first or last page clicked
handlePaginationButtonState();
// Decrement the results indicies
startResultsIndex -= global_totalResultsPerPage;
endResultsIndex = startResultsIndex + global_totalResultsPerPage - 1;
getNextResults();
});
函数 handlePaginationButtonState 完成打开和关闭后退和前进按钮的工作。
function handlePaginationButtonState() {
if (global_currentPage == 1) {
$("#prevPageLink").parent().attr('class', 'disabled');
$("#prevPageLink").off('click');
} else {
$("#prevPageLink").parent().attr('class', 'enabled');
$("#prevPageLink").on('click');
} // the rest of this function takes care of the numbered and right page buttons
因此,当 Web 应用第一次返回结果时,会加载前 10 个结果。如果我执行以下操作:
- 下一页(至第 2 页) - 绑定已打开
- 上一页(返回第 1 页) - 绑定已关闭
- 下一页(至第 2 页) - 出价已开启
我无法翻页,回到第 1 页。prePageLink 按钮不再响应。我已经使用下一页按钮和结果列表的末尾以及编号的页面按钮对此进行了测试。如果绑定已使用 .on() 或 .off() 函数打开或关闭,则它不再响应事件。
有任何想法吗?我完全感到困惑。