Events Mootools。循环中包含事件的新元素

Events Mootools。循环中包含事件的新元素,events,mootools,element,Events,Mootools,Element,我找不到问题。也许你能帮助我: load_images: function(config, container, page) { console.log(page) // Every time page = 4 Why? var paging = new Element('div','class':'pg'}).inject(container,'after'), css_class = ''; if (data.pages>1) {

我找不到问题。也许你能帮助我:

load_images: function(config, container, page) {

   console.log(page) // Every time page = 4 Why?
   var paging = new Element('div','class':'pg'}).inject(container,'after'),     
       css_class = '';

   if (data.pages>1) {
     for (var i=1; i<=data.pages; i++) {                        
        css_class   = (i == page) ? 'current' : '';

        new Element('a', {'class':css_class,'href':'javascript:void(0);','html': i,
           events: { 
               click: function(e){
                  load_images(config, container, parseInt(i));
              }
           }
        }).inject(paging);
     }
   }
}

The code above generate HTML:

<div class="pg">
   <a class="current" href="javascript:void(0);">1</a>
   <a class="" href="javascript:void(0);">2</a>
   <a class="" href="javascript:void(0);">3</a>
</div>
load_图像:函数(配置、容器、页面){
console.log(page)//每次page=4为什么?
var paging=新元素('div','class':'pg'}).inject(容器,'after'),
css_类=“”;
如果(数据页>1){

对于(var i=1;i这是一个典型的

问题在于,在您的情况下,单击事件会在循环中的i变量上创建闭包和关闭,因此最终它等于i的最后一个值: 在“for”循环中,您可以这样做来解决它:


for(var i=1;i你希望它是什么?当我点击链接1时->页面应该是1;当我点击链接2时->页面应该是2;当我点击链接3时->页面应该是3;是的,我知道了,你不需要给他们单独的评论
for (var i=1; i<=data.pages; i++) {                        
        css_class   = (i == page) ? 'current' : '';

        (function(i){
          new Element('a', {'class':css_class,'href':'javascript:void(0);','html': i,
            events: { 
               click: function(e){
                  load_images(config, container, parseInt(i));
              }
           }
         }).inject(paging);
       })(i);
     }