Javascript ..可能有参考价值的问题

时间:2010-11-02 15:50:47

标签: javascript jquery

这里的问题是警报页面的最终值是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);
            }

2 个答案:

答案 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参数)。