0
我正在向SVG元素註冊以下D3事件。D3 mousout事件先於點擊
要解釋這是關於什麼的,請考慮當我將鼠標懸停在特定區域上時,可以看到伴隨鼠標在該區域移動的圓形元素。
當我移動出該地區的圓被隱藏,當我把鼠標懸停回來它應該再次可見。 目標是點擊該圓圈執行功能。這是事情不起作用的地方。
mouseout事件總是被炒魷魚提前點擊的,而且由於對象被通過鼠標移開隱藏的,它偏出觸發click事件
d3.select(my_object.my_circle)
.data([{ "my_object": this }])
.call(FUNC_DRAG)
.on("mouseover", FUNC_OVER)
.on("mousemove", FUNC_MOVE)
.on("mouseout" , FUNC_OUT)
.on("click" , FUNC_CLICK);
以下是處理功能。
當我點擊上my_circle,在鼠標移開事件被觸發FUNC_OUT將隱藏我點擊的元素,取消點擊事件會觸發FUNC_CLICK
function FUNC_OVER(d) {
d3.select(my_object.my_circle).style("visibility", "visible");
}
function FUNC_OUT(d) {
console.log("mouseout");
d3.select(my_object.my_circle).style("visibility", "hidden");
}
function FUNC_CLICK(d) {
// this never executes;
console.log("click");
}
理想情況下,我需要了解如何在mouseout之前執行點擊事件。
你的CSS是什麼樣的?你有'指針事件:所有''在'circl e'?對我來說,它可以正常工作,如果你這樣做... –
我沒有使用指針事件。感謝您的建議。它確實有效,但不幸的是該元素在隱藏時是可點擊的,並且在這種情況下我無法知道它何時不應該被點擊(它可能被隱藏,因爲我移出了該區域,但會導致它仍然是可點擊的。但似乎我可以使用這種方法很好的提示 – gextra
對我而言,似乎最適合我的工作是避免使用鼠標事件隱藏對象,而是使用setTimeout(F,1000,circleObjectAndElse),它允許點擊事件在被隱藏之前觸發 – gextra