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);
}