[英]D3.js: Remove force.drag from a selection
我有一個(相當簡單的)問題:如何在D3.js的選擇中“取消調用”force.drag? 假設我創建了一組元素並在其上調用“call”,給它一個強制定向布局的拖拽回調。 看起來像這樣:
d3.selectAll('rect').call(force.drag);
現在,以后可以從某些節點中刪除該行為。 我的方法包括重置各種聽眾,例如“點擊”,“拖動”等
d3.select('rect#no-drag').on('click', null);
他們都沒有工作。 有人知道如何刪除回調嗎?
你很親密 拖動事件由具有名為drag
的命名空間的mousedown
事件啟動。 請參閱: https : //github.com/mbostock/d3/blob/master/src/behavior/drag.js#L5
所以,要刪除它你可以做:
d3.select('rect#no-drag').on('mousedown.drag', null);
這個問題不是要求如何對拖動元素進行細粒度控制,但是我來到這里尋找如何根據條件切換拖動開/關,並且提問者還詢問了如何在刪除它后將拖動恢復評論。
因此,對於任何想要有條件地允許拖動事件的人,請使用drag.filter 。
drag.filter
接受一個需要返回布爾值的回調。 如果回調返回true,則發生拖動,否則不會觸發拖動。
這比從選擇中刪除拖動然后嘗試重新應用它要清晰得多。
這條線不知何故它不兼容移動(chrome / android)
d3.select('rect#no-drag').on('mousedown.drag', null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.