闭包问题!

折腾了近三天,最后还是万能的百知出来的

  

var obj = [
{ "pg":".p1", "ig":1 , "skipp":2},
{ "pg":".p1", "ig":2 , "skipp":3},
{ "pg":".p1", "ig":3 , "skipp":5},
{ "pg":".p1", "ig":4 , "skipp":8},
{ "pg":".p1", "ig":5 , "skipp":11},
{ "pg":".p1", "ig":6 , "skipp":14},
{ "pg":".p1", "ig":8 , "skipp":17},
{ "pg":".p1", "ig":9 , "skipp":20},
{ "pg":".p1", "ig":11 , "skipp":22},
{ "pg":".p1", "ig":12 , "skipp":24},
{ "pg":".p1", "ig":13 , "skipp":26},
{ "pg":".p2", "ig":1 , "skipp":28},
{ "pg":".p2", "ig":3 , "skipp":30},
{ "pg":".p2", "ig":5 , "skipp":35},
];

//下面是正确的,原因就是闭包,
    for(i=0; i <= objclick.length; ){
        var clickname=objclick[i].pg+" img:eq("+ objclick[i].ig+")";
        $(clickname).click((function(i){
                     return function(){mySwiper.swipeTo(objclick[i].skipp,0);}
                                       })(i));
        i++;
        };


//下面是完全错误滴,因为在调用时,已经不在循环内了。所以会出错
    for(i=0; i <= objclick.length; ){
        var clickname=objclick[i].pg+" img:eq("+ objclick[i].ig+")";
       $(clickname).click(function(){
    mySwiper.swipeTo(objclick[i].skipp,0);
    };
        i++;
        };

 

posted @ 2013-09-23 16:15  天棚  阅读(162)  评论(0编辑  收藏  举报