我是一个 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));
在勘误包上,也有人写了这个“修复”。但是作者(Crockford!)仍然坚持书本版本。有什么我监督的 - 我的版本适用于我的情况只是巧合吗?
ps:当我将我的匿名返回函数绑定i
到 时this.i
,这将是全局对象吗?
pps:对不起我的英语很棒。:|