javascript文档onmousedown取消元素onclick

javascript文档onmousedown取消元素onclick,javascript,click,conflict,mousedown,Javascript,Click,Conflict,Mousedown,我有document.addEventListener('mousedown',…)向用户执行一些视觉反馈。但我也有使用elem.addEventListener('click')动态创建的元素,这些元素没有被激发。若我删除了文档的mousedown侦听器,那个么会触发对元素的单击(或者若我将文档的mousedown更改为click事件)。这是为什么?如何解决?我真的需要文档来处理mousedown,并且仍然能够让元素接收他们的点击事件 小提琴: 若取消注释文档mousedown事件,元素将收到

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

小提琴: 若取消注释文档mousedown事件,元素将收到ClickOK,否则不会触发Clickon元素


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

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

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


如果必须将圆圈元素保持在正方形的顶部,可以使用CSS规则强制鼠标事件“穿过”圆圈元素。

您在所有浏览器中都检查过这种行为吗?您能给我们提供一个JSFIDLE/SO自己的代码片段吗?将帮助我们了解您的代码我刚刚在chrome中尝试过,因为这是目标引擎。将准备小提琴…我在最初的后期摆弄中添加了小提琴的链接。我注意到了一个奇怪的行为:如果我在mousedown事件中评论el.style.left/right,那么一切都正常@hpet,将圆元素移动到正方形元素的顶部。因此,当
mousedown
返回时,鼠标指针被视为在圆上方,而不是在正方形上方,并且不会触发正方形上的
单击事件。