这里的问题是警报页面的最终值是i ..对此有什么解决方法吗?
for(var i=start;i<=end;i++)
{
num=pageNumber.clone();
num.click(function(event)
{
event.preventDefault();
var page=i;
alert(page);
// drawPager();
});
num.find("span").text(i);
if(i==curPage) {
num.find("span").addClass("current");
num=num.find("span");
}
$("#pager>div").append(num);
}
答案 0 :(得分:3)
你应该这样做:
num.click(function(i) {
return function(event) {
event.preventDefault();
var page = i;
alert(page);
}
}(i));
这会产生额外的外壳,因此 i 不会被覆盖。
答案 1 :(得分:2)
您需要将处理程序添加到以i
作为参数的单独函数中。
例如:
for(var i=start;i<=end;i++) {
handlePage(i);
}
function handlePage(i) {
num=pageNumber.clone();
num.click(function(event)
{
event.preventDefault();
var page=i;
alert(page);
// drawPager();
});
num.find("span").text(i);
if(i==curPage) {
num.find("span").addClass("current");
num=num.find("span");
}
$("#pager>div").append(num);
}
这样,每个函数调用都会生成一个单独的闭包(带有一个单独的i
参数)。