在我的頁面上,我使用Spine的控制器事件定義了一些事件。他們被分配到使用jQuery的代表選擇,他們很好地工作:鼠標事件在d3圖形,縮放加載後停止工作
events:
'click #zoom a': 'zoom'
'mouseenter #zoom a': -> $("#yZoom_help").show()
'mouseleave #zoom a': -> $("#yZoom_help").delay(1600).fadeOut 1600
異步在以後某個時間點上,我設置了一些事情與D3。具體來說,我設立一個畫布,一堆軸等的縮放行爲
@x_scale = d3.scale.linear()
.domain([@lcData.start, @lcData.end])
.range([0, @width])
@y_scale = d3.scale.linear()
.domain([@lcData.ymin, @lcData.ymax])
.range([@h_graph, 0])
@zoom_graph = d3.behavior.zoom()
.x(@x_scale)
.scaleExtent([1, @max_zoom])
.on("zoom", @graph_zoom)
@canvas = d3.select("#graph_canvas")
.attr("width", @width)
.attr("height", @h_graph)
.call(@zoom_graph)
.node().getContext("2d")
# ... some other things left out
的問題是,我通過這個D3設置的東西后,在非D3元素的鼠標事件停止工作。他們根本不工作。元素具有最高的z-index,並且不被任何畫布或svg元素遮擋,但是它們停止檢測任何鼠標事件。
d3應該只是在畫布上激活鼠標事件,對吧?是否有一些d3魔術正在接管整個頁面上的鼠標?例如,D3插入這個div在身:
編輯:如果你要明白我的意思,去這個鏈接:
http://korhal.andrewmao.net:9294/#/sources/APH10154043
有一個懸停時左上角的小圖標會改變顏色。這是鼠標事件的一個;它應該顯示一條消息。一旦頁面加載,它就停止工作。如果你想看到它的工作,只需重新加載頁面並禁用調試器中的JSONP調用,這會阻止設置d3的函數執行。