2014-06-23 31 views
1

我有一個D3 force layout網絡,帶有標記鏈接,如this one。我已經擴展了它,所以現有的鏈接標籤具有淡出效果。標籤的退出代碼如下所示:D3中的中斷退出轉換

$linkLabel.exit() 
    .classed('fadeout', true) 
    .transition() 
    .delay(250) 
    .remove(); 

現在有可能爲一個標籤,重新進入佈局,同時仍褪色/退出(當快速連續鼠標懸停和鼠標移開事件在同一節點上發生例如)。會發生什麼情況是因爲事件流程類似於exit() - >transition() - >delay() - >enter() - >remove(),因此無論如何都會移除相應的標籤。

我需要做的是中斷標籤的轉換,重新進入佈局,因此remove()函數不會被調用。你知道如何做到這一點?

+0

您是否有完全去除元素的替代方案? (不清楚你的標籤是SVG還是HTML,但是,如果它們是HTML,那麼將'display'屬性設置爲'none'如何?) –

+0

添加到元素的轉換應該自動取消較早的轉換。你能提供一個完整的例子嗎? –

+0

它基本上是我已經鏈接的[示例](http://bl.ocks.org/mzur/b30b932d1b9544644abd)。這是一個工作[小提琴](http://jsfiddle.net/Azy6E/1/)。 – Mouagip

回答

1

通過準備example我已經找到了一個可能的解決方案。

$svg.selectAll('.link-label.fadeout').remove(); 

modified fiddle(在updateLinkLabels()功能):如果我喜歡這個每次更新前刪除所有正在褪色/退出標籤它的工作原理。也許你知道一個更優雅的解決方案?

+0

你有沒有找到更優雅的解決方案? –

+1

沒有。它的工作,我離開了它。 – Mouagip