Enlever l'écouteur d'événement en JavaScript

- Je ajouter un écouteur d'événement à un élément:

/* 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);

Plus tard dans myfunction, je veux supprimer le gestionnaire de nouveau, pour empêcher la duplication des clics:

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
    //...
}

L'écouteur d'événement n'est pas supprimé, bien que. Quand je clique sur un des éléments, le code de myfunction est exécutée à nouveau. Comment puis-je enlever l'écouteur d'événement pour empêcher l'élément cliqué d'être cliqué de nouveau?

PS: je n'utilise pas jQuery.

Si vous voulez une mise en œuvre facilitée, lire ma réponse en bas sur le fond. 😉

OriginalL'auteur reggie | 2012-01-12