我有以下跨浏览器功能来添加事件监听器:
_SU3.addEventListener = function(elem, eventName, fn) {
if(elem.addEventListener ) {
elem.addEventListener(eventName, fn, false);
} else if (elem.attachEvent) {
elem.attachEvent('on'+eventName, fn);
}
};
我正在添加这样的监听器:
_SU3.addEventListener(_show, "click", function(event) {
_SU3.getChildren(_show, uri, element);
});
哪都好。但是我想在调用一次后删除监听器。就像这样:
_SU3.getChildren = function(_show, url, element) {
... blah...
_SU3.removeEventListener(_show, 'click', ANON_FUNCTION);
};
但是当然监听器功能是匿名的,因此没有要引用的函数名称。
如何删除侦听器?
由于
答案 0 :(得分:8)
您需要保留对该功能的引用:
var foo = function(event) { _SU3.getChildren(_show, uri, element); };
_SU3.addEventListener(_show, "click", foo);
...
_SU3.getChildren = function(_show, url, element) {
... blah...
_SU3.removeEventListener(_show, 'click', foo);
};
确保变量foo
位于删除事件侦听器的范围内。
答案 1 :(得分:4)
你做不到。如果要删除它,则必须存储对它的引用。你怎么能把它与其他人区分开来?
答案 2 :(得分:4)
答案 3 :(得分:-1)