2016-11-09 179 views
1

mousedown mouseup click事件中有rect事件。但是當我點擊矩形MouseUp事件觸發dosen`t https://jsfiddle.net/f0vbc94s/ 有我的代碼:如何防止鼠標事件的點擊事件

var rect=d3.select(".text").append("rect") 
        .attr("width",1000).attr("height",1000) 
      .style("fill","#00ff00"); 
rect.on("click",function(){ 
     d3.event.preventDefault 
     d3.select(this).style("fill","#000000") 
}) 
.on("mousedown",function(){ 
     d3.select(this).style("fill","#ff0000") 
}).on("mouseup",function(){ 
     d3.event.preventDefault; 
     d3.select(this).style("fill","#00ff00") 
}) 

回答

3

click事件被覆蓋mouseup事件。當您單擊 並將鼠標放在向下位置時,mousedown事件觸發和 更改了顏色。當你釋放鼠標,mouseup事件發生, 改變顏色,然後click事件立即發射,並改變 的顏色。所以你無法識別它。

如果您對click事件發表評論,您可以看到mouseup事件被解僱。

試試這個,

var rect=d3.select(".text").append("rect") 
        .attr("width",1000).attr("height",1000) 
      .style("fill","#00ff00"); 
//rect.on("click",function(){ 
     //d3.event.preventDefault 
     //d3.select(this).style("fill","#000000") 
//}) 
rect.on("mousedown",function(){ 
     d3.select(this).style("fill","#ff0000") 
}).on("mouseup",function(){ 
     d3.event.preventDefault; 
     d3.select(this).style("fill","#00ff00") 
}) 
+0

但我需要單擊事件做其他事情。如何處理這個? – Fboy

+2

您不能爲了同樣的目的而改變顏色,使用'mouseup'和'click'事件。你可以做不同的事情。什麼是你的實際目的和問題? – Aruna

+0

mouseup可以在不同的位置觸發我處理這件事,謝謝 – Fboy