私のページには、Spine のコントローラ イベントを使用して定義されたいくつかのイベントがあります。それらは jQuery のデリゲートを使用してセレクターに割り当てられ、正常に動作します。
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 を持ち、canvas または svg 要素によって隠されませんが、マウス イベントの検出を停止します。
d3 は、キャンバス上でのみマウス イベントをアクティブにする必要があります。ページ全体でマウスを引き継いでいる d3 マジックが進行中ですか? たとえば、d3 はこの div を本文に挿入します。
編集:私の言いたいことを知りたい場合は、このリンクにアクセスしてください:
http://korhal.andrewmao.net:9294/#/sources/APH10154043
ホバーすると色が変わる小さなアイコンが左上にあります。これは、マウス イベントのあるものです。メッセージを表示することになっています。ページが読み込まれると、機能しなくなります。動作を確認したい場合は、ページをリロードして、デバッガーで JSONP 呼び出しを無効にします。これにより、d3 をセットアップする関数が実行されなくなります。