javascript文件onmousedown取消元素onclick

时间:2014-10-06 09:26:45

标签: javascript click conflict mousedown

document.addEventListener('mousedown', ...)向用户执行了一些视觉反馈。但我也动态创建了elem.addEventListener('click')的元素,这些元素没有被触发。如果我删除文档mousedown侦听器,则会触发单击元素(或者如果我将文档的mousedown更改为click事件)。为什么这样以及如何解决这个问题?我真的需要文档来处理mousedown,并且仍然可以让元素接收他们的点击/点按事件。

FIDDLE:http://codepen.io/hpet/pen/izpJK 如果取消注释文档mousedown事件,则元素接收单击确定,否则单击元素永远不会被触发。

小提琴更新。取消注释第22/23行(设置位置)不会触发点击事件。

1 个答案:

答案 0 :(得分:0)

问题的根本原因是重叠元素。

由于您要在mousedown处理程序中的方形元素顶部移动圆元素,因此后续的mouseup事件将在圆圈上触发。由于该事件未在方形元素上触发,因此不会生成click事件。

如果您必须将圆形元素保留在正方形的顶部,则可以使用pointer-events CSS规则强制鼠标事件进入"通过"圆形元素。