如果環境支持addEventLister
第三個參數,這可能肯定是更好地使用。但是,如果你需要與遺留代碼工作(因爲你是在Intranet的工作,和/或無法添加構建步驟),你可以有這樣的事情:
var imgs = [img1, img2, img3, img4, img5];
for (var img, i = 0; img = imgs[i++];) {
img.onclick = function() { move.call(this); this.onclick = null; }
}
這將作品大多數情況下,甚至在addEventListener
根本不支持。 但我不會推薦這個,如果你有addEventListener
和至少ES6
的適當支持;我只是添加這個答案的記錄。如果您有至少addEventListener
(較老的IE不,他們已經attachEvent
),你至少可以有:
var imgs = [img1, img2, img3, img4, img5];
for (var img, i = 0; img = imgs[i++];) {
img.addEventListener("click", function listener() {
this.removeEventListener("click", listener, false);
move.call(this);
}, false); // in some browser the `useCapture` is still not optional
}
如果forEach
支持,循環可以與被替換。
'img1.addEventListener(「click」,functionName)'在函數中,在末尾執行'this.removeEventListener('click',functionName)' – Rajesh
將所有圖像包裝在單個'Div'中並使用'event冒泡「屬性基於目標元素。 – ricky
可能重複的[強制JavaScript的EventListener執行一次?](http://stackoverflow.com/questions/4878805/force-javascript-eventlistener-to-execute-once) – Rajesh