我是JavaScript新手。 我需要添加一個EventListener到Node.on('click',foo);我的第一次嘗試是 - 當然 - 一個失敗:來自「The Good Parts」的EventListener示例
var i = 0;
Y.one('#btnDel' + i).on('click', function() {
Y.one('#part' + i).remove(true);
});
比我rememberred是類似的東西是在「JavaScript的:好零件」的書,我發現它(第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:對不起,我的英語很棒。 :|