问题
YUI2.8的自定义事件如果添加了两个相同的侦听函数,在移除这些侦听函数时会有错误:
var testEvent = new YAHOO.util.CustomEvent("testEvent");
testEvent.subscribe(eventHandler);
testEvent.subscribe(eventHandler);
testEvent.unsubscribe(eventHandler);
function eventHandler(){
alert("testEvent fire");
}
testEvent.fire();
//只会显示一个"testEvent fire"
上面看似没问题,注册了两个相同的侦听函数,执行一次unsubscribe移除了一个,于是只剩一个侦听函数,但事实不是这样:
var testEvent = new YAHOO.util.CustomEvent("testEvent");
testEvent.subscribe(eventHandler);
testEvent.subscribe(eventHandler);
testEvent.subscribe(eventHandler);
testEvent.subscribe(eventHandler);
testEvent.unsubscribe(eventHandler);
function eventHandler(){
alert("testEvent fire");
}
testEvent.fire();
//只会显示两个"testEvent fire"
注册四个相同的侦听函数,执行了一次unsubscribe,却只剩下两个侦听函数有效。


