【发布时间】:2012-04-29 13:36:01
【问题描述】:
我是 JavaScript 新手。 我需要添加一个 EventListener 到 Node.on('click', foo);我的第一次尝试当然是失败了:
var i = 0;
Y.one('#btnDel' + i).on('click', function () {
Y.one('#part' + i).remove(true);
});
我记得在“JavaScript: The Good Parts”一书中有类似的东西,我找到了它(第 39 页):
var add_the_handlers = function (nodes) {
var i;
for (i = 0; i < nodes.length; i += 1) {
nodes[i].onclick = function (i) {
return function (e) {
alert(e);
};
}(i);
}
};
但这也不起作用。通过第二次(更多 21 次)查看,我有一些问题:您返回一个需要参数 'e' 的内部函数,但内部函数没有调用 'i' - 只是外部函数。 我“修复”了这个问题,现在它适用于 YUI:
Y.one('#btnDel' + i).on('click', function (i) {
return function () {
Y.one('#part' + i).remove(true);
}
}(i));
在on the errata pakge,也有人写了这个“修复”。但是作者(Crockford!)仍然坚持书本版本。有什么我监督的吗?我的版本适用于我的情况只是巧合?
ps:当我在我的匿名返回函数中将i 绑定到this.i 时,这将是全局对象吗?
pps:对不起,我的英语很棒。 :|
【问题讨论】:
标签: javascript yui