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