にイベントリスナーを削除します。私は要素にイベントリスナーを追加するJavaScript
/* sitepoint.com/javascript-this-event-handlers */
function AttachEvent(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
}else{
element.attachEvent("on"+type, handler);
}
}
window.addEventListener("load", function() {
var els = getElementsByClassName('name', 'img');
var elsnum = els.length;
if(elsnum) //found
{
var i = 0;
for(i=0; i < elsnum; i++)
{
var the_els = els[i];
AttachEvent(the_els, "click", myfunction);
}
}
}, false);
その後myfunction
で、私は重複したクリックを防ぐために、再びハンドラを削除する:
function myfunction(e) {
e = e || window.event;
var target = e.target || e.srcElement;
//more code
//...
//remove click handler
target.removeEventListener('click', e, false);
//more code
//...
}
イベントしかし、リスナーは削除されていません。要素の1つをクリックすると、myfunction
のコードが再度実行されます。クリックした要素が再びクリックされないようにイベントリスナーを削除するにはどうすればよいですか?
PS:jQueryは使用しません。
もっと簡単に実装したい場合は、私の答えを下に読んでください。 ;) – TERMtm