2017-06-13 8 views
0

私はポリゴンとポリゴン上のテキストでd3.jsマップを持っています。そして私はマウスオーバーイベント時にポリゴンの色を変更するイベントを持っています。しかし、マウスがテキストの上にあるとき(テキストはポリゴンの上にあります)、イベントは発生しませんでした。 修正方法? おかげで断然d3.jsの下位レベルにイベントを渡す方法は?

chart.selectAll("path") 
    .data(data.features) 
    .enter() 
    .append("path") 
    .attr("d", path) 
    .style("fill", function(data) { 
     return regions[data.properties.FID] 
    }) 
    .style("stroke", "#fff") 
    .on("mouseover", function(e) { 
     d3.select(this).style("fill", "#63CBF8"); 
    }) 
chart.selectAll("text") 
    .data(data.points) 
    .enter() 
    .append("text") 
    .attr("class", "labs") 
    .attr("transform", function(d) { 
     return "translate(" + projection(d.geometry.coordinates) + ")"; 
    }) 
    .attr("dy", ".35em") 
    .text(function(d, i) { 
     return (d.properties.name).toString(); 
    }); 
+2

これを追加し、:ここでは以下の2つの方法があります")'。 –

答えて

2

これを行う最も簡単な方法は、まったくクリックやマウスの動作を登録からテキストを防止することによってです。これはpointer-eventsで制御できます。あなたは、CSSまたはJavaScript経由でそれを行うことができます。 `.ATTR( "ポインタイベント"、「なし:テキスト選択で

CSS

.labs { 
    pointer-events: none; 
} 

javascriptの

chart.selectAll("text") 
    .data(data.points) 
    .enter() 
    .append("text") 
    .attr("class", "labs") 
    .attr("pointer-events", "none"); 
+0

誰もがdownvoteを説明する気に? – Ian

+0

それは私ではありませんでしたが、JSにエラーがあります:ポイントイベントではなく、ポインタイベントでなければなりません!そして、これらは実際には2つの異なるアプローチであることをさらに明確にすることができます。 – altocumulus

+0

@altocumulusありがとう、私はそれを取ってきて編集しました。 – Ian

関連する問題