在d3.js中使用.remove()时是否会自动删除事件侦听器?

Joh*_*mar 5 javascript d3.js

我知道在jQuery中如果我们使用.remove()删除一些元素,那么将删除与元素关联的所有绑定事件和jQuery数据.对于d3来说是一样的吗?

如果答案是肯定的,那么如果我将事件绑定到svg中的节点.on()然后删除svg使用.remove(),则svg 上所有节点的所有事件也都是未绑定的(即svg子节点的事件)去掉)?

如果上述任何一个问题的答案都是肯定的,我假设我需要手动取消绑定元素.on('eventType',null).我试图为这样的东西写一个通用函数,看起来像:

function unbindCommonEvents(elem){
  var eventTypes = ['click','dblclick','mousedown','mouseup','mouseover','mousemove','mouseout','dragstart','drag','dragenter','dragleave','dragover','drop','dragend','Keyboard','keypress','keyup','load','unload','abort','error','resize','scroll','select','change','submit','reset','focus','blur','focusin','focusout','zoom'];
  for (var i = 0; i < eventTypes.length; i++) {
    elem.on(eventTypes[i],null);
  };
return false;
}
Run Code Online (Sandbox Code Playgroud)

但是,这看起来很麻烦.必须有一个更优雅的解决方案,也许类似于此处发布解决方案

归档时间:

查看次数:

1343 次

最近记录:

12 年,2 月 前