本帖最后由 dancingyomin 于 2013-04-08 16:25:35 编辑

解决方案 »

  1.   

    mapObj.bind(ers[i],"click",(function(_i){
    return function(e){infoWindows[_i].open(mapObj,e.lnglat)}
    })(i)
    );
      

  2.   

    这是jqurey写法么?是不是需要引用jqurey文件的? 这个就是传说中的回调函数么?刚才直接复制试验了下,还不成功。现在点击后不显示任何info注释另外不是很理解~我分解了一下这个文件fn = function(e){infoWindows[_i].open(mapObj,e.lnglat);}
    mapObj.bind(ers[i],"click",(function(_i){return fn;})(i));这样对么?
      

  3.   

    这不是什么JQUERY写法。就是个闭包啦。。2L是正解。说白点就是编译期跟运行期的区别,你可以分析一下你的代码,逻辑上看起来是没问题的,每个绑定一个对应的i,但是真正到了运行期,函数还是去取i的值,这个时候i已经是最后那个值了,所以就形成了这样的情况用立即执行的函数(function(_i){
    return function(e){infoWindows[_i].open(mapObj,e.lnglat)}
    })(i)执行以下的话,return的是一个新函数,这个函数里的_i就是每次的i,这样每次绑定的函数都是对应的i。