想象一下,我们每5秒刷新一次页面并重建项目列表。重建列表后,我们希望为每个项目分配一个事件监听器:
refreshContent: function() {
array.forEach(items, function(item) {
on(item, 'click', function() {
// do something
});
});
}
问题是某些项目已经有事件侦听器并且会重复。
有没有办法清除该项的所有先前的侦听器或有 singleton 侦听器?
答案 0 :(得分:1)
您需要跟踪附加的事件,然后才能将其分离:
refreshContent: function() {
if(handles) {
//clean up old handle
array.forEach(handles, function(handle) {
handle.remove();
});
}
//save all handles in this variable
handles = [];
array.forEach(items, function(item) {
handles.push(on(item, 'click', function() {
// do something
}));
});
}