从javascript事件中检索事件对象,然后分离事件

时间:2014-06-03 17:16:11

标签: javascript event-handling

所以我想调用一个函数并使用vanilla javascript(我已经完成)在click事件上传递它参数但是我遇到了在事后分离事件的问题。当click事件被触发时,我想调用一个函数并传递它的参数,包括事件对象,然后分离事件。我已经尝试了一些东西,但我遇到的问题是匿名函数在调用之后无法引用,所以我不能将它作为参数传递给事件“unhandler”。如何在回调参数时捕获触摸事件?

function bindClickExpandEvent(element, type, handler, obj) {
    if (element.addEventListener) {
        element.addEventListener(type, function (event) {
            handler(event, obj);
        }, false);
    } else {
        element.attachEvent('on' + type, function (event) {
            handler(event, obj);
        });
    }
}

function removeClickExpandEvent(elem, eventType, handler) {
    if (elem.removeEventListener)
        elem.removeEventListener(eventType, handler);
    if (elem.detachEvent)
        elem.detachEvent('on' + eventType, handler);
}

1 个答案:

答案 0 :(得分:0)

如果您总是希望在事件触发后立即分离侦听器,则可以直接从 引用它的处理程序中执行此操作:

function bindClickExpandEventOnce(element, type, handler, obj) {
    function boundhandler(event) {
        removeClickExpandEvent(element, eventType, boundhandler);
        handler(event, obj);
    }
    if (element.addEventListener)
        element.addEventListener(type, boundhandler, false);
    else
        element.attachEvent('on' + type, boundhandler);
}
相关问题