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

时间:2013-08-21 18:23:38

标签: javascript d3.js

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

如果答案是肯定的,那么如果我使用.on()将事件绑定到svg中的节点然后使用.remove()删除svg,那么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;
}

然而,这似乎很麻烦。必须有一个更优雅的解决方案,可能类似于solutions posted here

0 个答案:

没有答案