我已經編寫了一些強調(通過增加筆畫寬度/筆觸顏色變化)節點可視化(某些圓圈,某些rects)和相關鏈接/當用戶在節點上「停下來」的節點。當用戶將鼠標懸起時,高光消失。這一切都工作正常,除非當點擊狀態的節點被拖離svg空間(技術上我已經將可視化約束到svg空間,但顯然鼠標點不受約束)並被釋放。當鼠標按鈕被釋放時,突出顯示然後不會消失。d3突出顯示mouseover上的節點會導致鼠標脫離svg空間時的意外行爲
jsfiddle here - http://jsfiddle.net/hiwilson1/bga0wcLL/。
我選擇以實現突出顯示的方法,是操縱與所點擊的可視化節點相關聯的基礎對象,然後更新可視化,這是所有照顧在以下onmousedown事件/ onmouseup事件功能:
function highlight(d) {
if (event.type == "mousedown") {
d.highlight = 1;
d.associatedLinks.forEach(function(link, i) {
link.highlight = 1;
link.source.highlight = 1;
link.target.highlight = 1;
})
}
else {
d.highlight = 0;
d.associatedLinks.forEach(function(link, i) {
link.highlight = 0;
link.source.highlight = 0;
link.target.highlight = 0;
})
}
svg.selectAll(".node .shape")
.attr("stroke", function(d) { if (d.highlight == 1) { return "Black"}})
.attr("stroke-width", function(d) { return (d.highlight == 1) ? 3 : 1 });
svg.selectAll(".link")
.attr("stroke", function(d) { return (d.highlight == 1) ? "Black" : "Grey" })
.attr("stroke-width", function(d) { return (d.highlight == 1) ? 3 : 1 });
}
我是對的假設要停止當你的邊界區域以外的所有拖動功能?只是不確定你想看到什麼。 – Pogrindis
對不起,我可能沒有解釋清楚。目前,如果用戶在svg空間外釋放鼠標按鈕,則節點/鏈接保持其突出顯示的狀態(粗黑邊)。我想要的行爲是,mouseup會將節點/鏈接恢復爲未加亮的狀態,而不管用戶釋放鼠標按鈕的位置。 – hwilson1