【问题标题】:multiple mouse events are fired on mouse click鼠标点击时触发多个鼠标事件
【发布时间】:2015-07-01 03:27:55
【问题描述】:

我创建了一个 dojo 图形组并将几个鼠标事件连接到它,但是 mouseclick 事件会触发所有其他鼠标事件,单击时我没有移动鼠标。

鼠标点击触发了“mouseout”、“mouseenter”,最后触发了“mousedown”。

有人有什么想法吗?

var group = surface.createGroup();
group.on("mousedown", function(e) { handle mouse click here });
group.on("mouseout", function(e) { handle mouse out here });
group.on("mouseenter", function(e) { handle mouse enter here });

更新:我在鼠标输入时重新创建图形,这导致了各种问题。

【问题讨论】:

  • 也应该有一个鼠标 up,因为根据定义,“单击”是鼠标按下事件,然后鼠标在同一元素上按下。 (关于鼠标输入,这不是因为您必须将鼠标移到有问题的元素上才能单击它吗?这会给您从鼠标最初位于的任何其他元素上的鼠标移出事件...)
  • 我根本没有移动(至少我在单击时尝试不移动,仍然会触发所有这些事件)。你知道我在哪里可以找到javascript鼠标事件处理的详细描述。谢谢

标签: javascript dojo mouseevent dojox.gfx


【解决方案1】:

尝试使用dojo/mouse (http://livedocs.dojotoolkit.org/dojo/mouse):

var group = surface.createGroup();
group.on("mousedown", function(e) { handle mouse click here });
group.on(mouse.leave, function(e) { handle mouse out here });
group.on(mouse.enter, function(e) { handle mouse enter here });

我猜click 应该比mousedown 更好,因为你写了“处理鼠标点击这里”

【讨论】: