这可能很简单,但它让我疯了。 我正在使用jquery和while循环进行一些分页,它有一个名为“pageNum”的变量,它在循环结束时更新并表示正在写出的页面。显然,在每次迭代结束时都会添加pageNum。精细。 这是给我带来困难的代码:
$('#page' + pageNum).click(function(){
alert(pageNum);
});
这样,如果3是当前的pageNum,则id会正常工作,并且会为(例如)id为page3的span分配一个单击。问题是,当我点击该范围时,被警告的pageNum始终是在循环中设置的pageNum的最后一个值。因此,如果有8个页面,它将始终提醒8.因此,我认为它必须始终拉入当前值,所以我尝试传递pageNum,如下所示:
$('#page' + pageNum).click(function(pageNum){
alert(pageNum);
});
但现在警报显示[Object object]。 我尝试在click事件内外创建变量,并为它们分配pageNum的值,似乎没有任何效果。 这一定是非常愚蠢的事情,有人可以帮帮我吗?我需要在该click事件中使用当前pageNum。 在此先感谢您的帮助!
答案 0 :(得分:4)
不是直接引用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);
});
答案 1 :(得分:1)
答案 2 :(得分:0)
$('#page' + pageNum).click(function()
{
var pageNum = $( this ).attr( 'id' ).match(/page([0-9]*)/)[1];
alert( pageNum );
});