这可能很简单,但是却让我发疯。
我正在使用jquery和while循环进行分页,该循环具有一个名为“ pageNum”的变量,该变量在循环末尾更新并表示要写出的页面。显然,将pageNum添加到每次迭代的末尾。精细。
这是给我带来麻烦的代码:
$('#page' + pageNum).click(function(){
alert(pageNum);
});
这样,该ID才能正常运行,并且如果当前的pageNum为3,则该ID甚至会为(例如)一个ID为page3的跨度分配点击。问题是,当我单击该跨度时,被警告的pageNum始终是循环中设置的pageNum的最后一个值。因此,如果有8个页面,它将始终会发出警报8。因此,我认为它必须始终拉入当前值,因此我尝试像这样传递pageNum:
$('#page' + pageNum).click(function(pageNum){
alert(pageNum);
});
但是现在警报显示[Object object]。
我尝试在click事件内外创建变量,并为它们分配pageNum的值,但似乎没有任何效果。
这一定是真的很愚蠢,有人可以帮我吗?我需要在该click事件中使用当前的pageNum。
在此先感谢您的帮助!。
最佳答案
与其直接引用pageNum
变量,不如直接从每个链接中动态获取它,例如:
$('#page' + pageNum).click(function(){
alert(this.id.replace('page',''));
});
或者给他们一个类,说
.pageLink
并立即绑定它们,就像这样:$('.pageLink').click(function(){
alert(this.id.replace('page',''));
});
当前,您正在从循环中引用单个
pageNum
变量,该变量会更改并最终结束循环结束时的内容。您要么需要将其传递给闭包,要么完全忽略它(如上),或者使用传递给.bind()
的事件数据,如下所示:$('#page' + pageNum).bind({id: pageNum}, 'click', function(e) {
alert(e.data.id);
});