0
我希望所有事件在点击时停止在图表上执行。然而,尽管我愿意,无论如何,织工处理程序都会被执行。我怀疑我的目标与我打算的目标不同。尽管如此,打败了我。尽管关闭()被调用,事件仍在处理中
由于the fiddle的例子,点击任何部门使环变绿。然后,我希望图例文本不会重新出现在现有的剩余环区域上。
var grx = chart.selectAll(".sector").data(pie(dataPoints))
.enter().append("g").attr("class", "sector")
.on("mouseenter", function (target) {
$(".legendMain").animate({ opacity: 0 }, { queue: false });
})
.on("mouseleave", function() {
$(".legendMain").animate({ opacity: 1 }, { queue: false });
})
.on("click", function (target) {
$("#chart .sector path").css("fill", "rgb(0,111,0)");
d3.selectAll("#chart .sector path")
.transition().duration(1000).attr("d", out);
//d3.selectAll("#chart .sector text").remove();
$(".sector").off();
$("path").off();
$("g").off();
});
我试图把它关闭克 S,路径 S和文本小号ANS以及所有.sector类元素。没什么帮助。我是否选择了错误的组件?我如何检查谁持有事件处理程序?由于D3下的数据绑定,处理卡住了吗?
我很确定那里有什么奇怪的东西 - 或者至少是高度反对直觉 - 因为我已经尝试了以下事件并且事件仍然发生(文本淡入/淡出)。
$("*").off();
有没有办法在单次重击中关闭多个/所有事件?有没有一个API?我在文档中没有看到太多... –
@KonradViltersten,它看起来像[讨论](https://github.com/d3/d3/pull/1855),但从未实现。看起来你可以命名空间所有的事件,然后通过命名空间全部删除它们。 – Mark