Dojo:删除所有元素侦听器或具有singleton-listener

时间:2015-07-14 07:41:45

标签: javascript dojo listener

想象一下,我们每5秒刷新一次页面并重建项目列表。重建列表后,我们希望为每个项目分配一个事件监听器:

refreshContent: function() {
  array.forEach(items, function(item) {
    on(item, 'click', function() {
      // do something
    });
  });
}

问题是某些项目已经有事件侦听器并且会重复。

有没有办法清除该项的所有先前的侦听器或有 singleton 侦听器?

1 个答案:

答案 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
    }));
  });
}