删除事件监听器与d3js不工作
Remove event listener with d3js not working
我有一个SVG结构,里面有一些形状。我想在单击形状时触发一个事件,在单击SVG时触发另一个事件。问题是SVG事件总是被触发。
为了防止这种情况,我禁用了形状的事件冒泡。此外,我曾试图禁用事件d3,但似乎不工作。还尝试使用原生Javascript代码禁用事件。
一个超级简单代码的例子是: <<p> SVG结构/strong><svg id="canvas" xmlns="http://www.w3.org/2000/svg" version="1.1">
<g>
<circle class="shape" r="10" cx="10" cy="10">
</g>
</svg>
Javascript代码d3.select('#canvas').on('click',svgClickEvents);
d3.selectAll('.item')
.on("mouseover",mouseoverItem)
.on('mouseleave',mouseleaveItem);
//click
d3.selectAll('.item',function(){
//when an item is clicked, svgClickEvents must not be fired
d3.select('#canvas').on('click',null); //this should remove the event listener
//also tried with getElementById('canvas').removeEventListener('click',clickEvents,false);
d3.select(this)
.on("click",function() {
d3.event.stopPropagation();
console.log("click circle")
});
});
我知道事件没有被禁用,因为我从clickEvents函数获得onsole.log()
文本警报。
在本例中,语法为:
d3.selectAll('.classname', function() { ... });
在d3.js中不起作用。相反,您应该使用如下命令:
d3.selectAll('.classname').each(function() { ... });
所以在上面的代码中,这应该可以工作:
d3.selectAll('.item')
.each(function(){
//when an item is clicked, svgClickEvents must not be fired
d3.select('#canvas').on('click', null); //this should remove the event listener
d3.select(this).on("click",function() {
d3.event.stopPropagation();
console.log("click circle");
});
});
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- d3js强制布局未按预期工作
- D3JS 强制引导,鼠标悬停在线链接无法正常工作
- D3JS 在编码解码数据后工作
- 删除事件监听器与d3js不工作
- d3js图表动画不工作
- 在d3js布局中使用XML作为数据源;我不在firefox工作
- D3js退出()和更新工作,不能进入()
- D3js缩放/拖动在我的代码中不再工作(+代码示例)
- 似乎不能从D3js工作的例子