javascript文档onmousedown取消元素onclick

标签 javascript click conflict mousedown

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

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

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

最佳答案

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

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

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

关于javascript文档onmousedown取消元素onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26213333/

相关文章:

javascript - 将\n 替换为我在 $sce.trustAsHtml() 上使用的模型变量上的 <br> 标记

Java 托盘图标 : addMouseListener -> distinguish between single click and double click?

git - 在对我的 github 分支进行 rebase 后,其他人的提交位于我的 pull 请求中

javascript - 单击函数执行当前和先前的函数代码

javascript - 具有动态 jQuery 选择器的循环事件处理程序

hyperlink - 未捕获的类型错误 : Cannot call method 'click' of null

CSS 冲突 - 位置 :absolute in ExtJs Grid

javascript - 卡塔 : Take a ten minute Walk

javascript - 为什么继承Array在ES5中很难实现?

javascript - 用户脚本应该运行一次,而不是多次