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);
}
и т. д. и т. д. Я уверен, что есть и другие способы рефакторинга, также