javascript - 即使在 var 发生更改后,仍会在 mootools 事件中回显变量的 "then"状态

标签 javascript variables mootools

让我们看一些伪 Mootools 代码:

for loop (i) from 0 to 5 {
    create.element {
        id: 'element_'+i
    }
    $('element_'+i).addevent.click {
        alert(i);
    }
}

事件已正确添加到元素中。然而,当点击时,它们都会提醒最新的迭代器......这将是 5。

有什么方法可以更改事件中的“alert(i)”以在该时间点提醒迭代器吗?

.toString 没有做太多事情。

最佳答案

http://www.jsfiddle.net/dimitar/sbytJ/1/

for (var ii = 0; ii < 5; ++ii) {
    new Element("div#id_" + ii + ".monkey[text=click me]").store("id", ii).addEvent("click", function() {
        alert(this.retrieve("id") + " id: " + this.get("id"));
    }).inject(document.body);

}

使用元素存储 (element.store("id", ii)/this.retrieve("id")) 是确保正确值引用的一种方法在运行时...

通过匿名函数的另一种方式:http://www.jsfiddle.net/dimitar/sbytJ/2/

for (var ii = 0; ii < 5; ++ii) {
    (function(id) {
        new Element("div#id_" + id + ".monkey[text=click me]").addEvent("click", function() {
            alert(id);
        }).inject(document.body);
    })(ii);
}

等等,我确信还有其他方法可以重构它

关于javascript - 即使在 var 发生更改后,仍会在 mootools 事件中回显变量的 "then"状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054915/

相关文章:

php - 在 mysql_query 字符串中使用 PHP 变量

javascript - 下一个选项卡显示内容,但选项卡不跟随

javascript - 使用 Javascript 时出现 Symfony/Twig : trying to dynamically add rows via an Add Row button, 问题

javascript - Selenium : I would like to click on "OK button" on pop up which also has some input option to provide name

javascript - 使用 AJAX 解析有效的 JSON?

javascript - Javascript 的原生 `instanceof` 运算符和 MooTools 的 `instanceOf` 函数有什么区别?

javascript - 使用 MooTools/JavaScript 进行字符串操作

javascript - 不包含名为

python - 在另一个函数中引用变量?

javascript - 在 JavaScript 中将 float 转换为整数的最佳方法是什么?