Javascript d3:笔刷更改单击鼠标悬停
我试图创建一个散点图,其中包含笔刷选择、工具提示和单击事件,但似乎一旦我将笔刷添加到svg画布,对象上的所有单击事件都会映射到鼠标盖。这有什么办法吗?下面的示例代码和@Javascript d3:笔刷更改单击鼠标悬停,javascript,events,d3.js,click,brush,Javascript,Events,D3.js,Click,Brush,我试图创建一个散点图,其中包含笔刷选择、工具提示和单击事件,但似乎一旦我将笔刷添加到svg画布,对象上的所有单击事件都会映射到鼠标盖。这有什么办法吗?下面的示例代码和@ 但很明显,你把刷子弄松了。。。。有没有办法让所有3个动作都正确执行?单击事件没有转化为鼠标悬停,它们根本没有发生——您看到的鼠标悬停事件是当您将光标移动到圆上单击它时发生的。然而,这个问题有一个简单的解决方案——您所需要做的就是将圆圈上的指针事件设置为all 完整示例。这看起来很有用,这也很有用。作者在这篇文章中提到了要点。很酷
但很明显,你把刷子弄松了。。。。有没有办法让所有3个动作都正确执行?单击事件没有转化为鼠标悬停,它们根本没有发生——您看到的鼠标悬停事件是当您将光标移动到圆上单击它时发生的。然而,这个问题有一个简单的解决方案——您所需要做的就是将圆圈上的
指针事件设置为all
完整示例。这看起来很有用,这也很有用。作者在这篇文章中提到了要点。很酷的要点。这可能会帮助我解决任何遗留问题。谢谢太棒了,谢谢!这完全是可行的,但是,肯定有一些映射或正在进行的事情。在原始版本中,单击确实会触发mouseover函数,并且可以在单击时继续多次触发。你自己试试看。现在,也许是鼠标消失了,再次出现了,或者是事件被映射了?但它肯定会发生,而且在没有画笔或指针事件设置为all时不会发生。Chrome不会在这里发生(我已经尝试过好几次)。嗯,在我使用Chrome的工作Mac和使用Firefox的家用PC上都会发生。。。不管怎样,问题还是解决了。编辑:只是为了无用的细节。第一次单击时不会触发任何内容,但所有后续单击都会生成鼠标悬停事件。真的很奇怪。小提琴笔刷的例子表现得很奇怪。在背景上启动画笔会正常选择,但通过单击其中一个圆启动画笔会导致画笔选择区域从鼠标指针移开。想法?当圆圈收到指针事件时,你不应该在那里启动画笔,因为它会导致你提到的事情。
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script>
var my_circles = [{"x": 40, "y": 100, "r": 12},
{"x": 100, "y": 40, "r": 8}],
width = 400,
height = 400,
svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
function click(d) { console.log("Clicky Clicky!") };
function mouseover(d) { console.log("I saw mouse!") }
var brush = d3.svg.brush()
.x(d3.scale.identity().domain([0, width]))
.y(d3.scale.identity().domain([0, height]))
svg.call(brush);
svg.selectAll("dataObj")
.data(my_circles)
.enter().append("circle")
.attr("r", function(d) { return d.r })
.attr("cx", function(d) { return d.x })
.attr("cy", function(d) { return d.y })
.style("fill", "blue")
.on("mouseover", mouseover)
.on("click", click);
</script>
svg.call(brush);