我知道在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?