【问题标题】:Cancel click on parent when mousedown on child当鼠标按下子级时取消单击父级
【发布时间】:2015-02-02 04:33:24
【问题描述】:

我已经阅读了几篇类似问题的帖子,但没有一个对我有用。

有两个div,一个是另一个的父级:

<parent>
  <son></son>
</parent>
  • “Son”具有 mousedown、mousemove 和 mouseup 的事件处理程序。
  • “父”有一个点击事件处理程序。
  • “父”大于“子”。

要求:

  • 必须能够在“儿子”内进行 mousedown-mousemove-mouseup。 [好的]
  • 必须能够单击“父级”。 [好的]

但是,如果有人将鼠标拖出“儿子”并释放它,“父母”的点击处理程序就会触发。

有什么办法可以避免吗?

我应该改变我的布局吗?

谢谢!

http://jsfiddle.net/g3qzkz74/17/

(拜托,纯javascript!)

【问题讨论】:

    标签: javascript google-chrome javascript-events


    【解决方案1】:

    您需要防止“儿子”click 事件冒泡 DOM 树:

    function sonClick(e) {
        e.stopPropagation();
    }
    
    document.getElementById('son').addEventListener('click', sonClick, false);
    

    演示:http://jsfiddle.net/g3qzkz74/14/

    【讨论】:

    • 嗨,对不起,首先,我将事件列表移到页面顶部,导致失去对元素的关注。它现在已修复在 jsfiddle.net/g3qzkz74/17 上。原来的问题仍然存在于您的解决方案中:jsfiddle.net/g3qzkz74/18(已更新元素放置)。其次,我试图在谷歌浏览器上重现这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2014-03-24
    • 2014-09-15
    相关资源
    最近更新 更多