eventlistener函数定义

时间:2017-03-14 13:20:46

标签: javascript function javascript-events

我有以下代码来设置我的eventlistener(是的,我知道我应该使用委托)。函数处理程序通常是匿名的,但我之后命名它,所以我可以删除它,但这里的问题开始了。这是代码:

for (var i=0;i<karten.length;i++) {
  setupeventlistener(karten[i]);
}

function setupeventlistener (obj){
obj.addEventListener("click",function handler(e){output(obj,e);});
}

现在,如果我想删除输出函数内的侦听器(使用removeeventlistener(&#34;单击&#34;,处理程序),我无法访问处理函数,因为它在setupeventlistener范围内(这就是我猜的?),但是如果我将它移动到全局范围并通过var定义它,他就无法访问参数obj(来自setuplistener传递给输出。

简而言之,我想删除监听器并保持我的所有功能,因为我的小任务除了无法移除监听器以完成项目之外。

1 个答案:

答案 0 :(得分:0)

这会有帮助吗?

var list = {};

function set( obj, key )
{
    list[ key ] = Object.create(null);
    list[ key ].listener = function(e) { output( obj, e ) };
    list[ key ].target = obj;
    obj.addEventListener( 'click', list[ key ].listener );
}

function reset( key )
{
    list[ key ].target.removeEventListener('click', list[ key ].listener );
    delete list[ key ]
};

for (var i=0; i < karten.length; i++)
{
    set(karten[i], i );
}