Mootools正在为循环设置事件
Mootools setting up Event on for loop
我有一个关于Mootools事件处理的问题。。。
在这种情况下,你有一个循环,每个循环都创建一个div并在其上附加一个事件。它总是取循环的最后一个循环的值。
类似:
for(var i=0;i<10;i++) {
var el = new Element('div').inject($(document.root));
el.addEvent('click',function() {
alert(i);
});
}
所有元素将发出警报"10"。我想要的是让每个新元素计数+1。第一个=0,第二个=1。。。
希望有人能理解我的意思。提前Thx!
在添加到局部变量时使用闭包来封装迭代器:
for(var i=0;i<10;i++) {
var el = new Element('div').inject($(document.root));
(function(i){
el.addEvent('click',function() {
alert(i);
});
}(i));
}
学派认为不应该在循环中创建函数。
您可以做的其他事情是将迭代器传递给构造函数并将其保存在存储器中:
var el = new Element('div').store('index', i).inject(document.body);
...
click: function(){
console.log(this.retrieve('index'));
}
您还可以使用.each
,它会自动为您执行迭代器:
var a = new Array(10);
a.forEach(function(item, index){
new Element('div', {
events: {
click: function(){
alert(index);
}
}
}).inject(document.body);
});
你也可以将它绑定到回调。。。许多许多模式。
找到了一个变通方法,不确定它是否符合您的要求。
检查小提琴这里
JS/Mootools:
for(var i=0;i<10;i++) {
var el = new Element('div', {onclick: 'alert('+i+')',text:i}).inject(document.body);
}
相关文章:
- 我可以在FullCalendar中设置事件ClickLimit弹出窗口的样式吗
- 如何在表单提交时在谷歌分析上设置事件跟踪
- requirejs在代码中设置事件
- 如何在javascript中设置事件的顺序
- 如何在按钮单击中设置事件的优先级
- 在扩展事件发射器的 ES6 类定义中设置事件侦听器
- 如何使用 XML 合金标记在钛金中的列表视图上设置事件
- 使用 jQuery 循环设置事件函数触发器
- JQuery 设置事件触发的计时器
- 如何使用 jQuery 将设置事件侦听器推迟到 ajax 调用和渲染完成后
- 如何在 for 循环中维护迭代变量的原始值,该循环设置事件调用,其中迭代值是函数的一部分
- 高图表 + 从 jquery 中的选项设置事件点击
- 使用ES6箭头函数设置事件侦听器
- Safari中没有密钥设置事件
- 如何在JQuery中设置事件
- 如何将字符映射到IE/Mozzilla密钥码,以便与Javascript密钥设置事件一起使用
- Mootools正在为循环设置事件
- 如何在流星中设置事件目标的文本和颜色?
- 在特定层(google maps)上设置事件监听器
- 如何为谷歌图表设置事件