因一个需求需要做父元素做点击事件,子元素有拖动事件,但是现在的父元素的点击事件影响了拖动,我做了一个demo,请问各路大侠们,如何对#idDrag的mouseup放开后不触发#DragContent的点击事件呢。
PS :鄙人使用了另一个比较笨的方法解决的,#idDrag拖动的时候就注销了#DragContent的click事件,#idDrag拖动结束(mouseup)后再重新绑定#DragContent的click事件。
感谢各位的细心回答,click时间是可以通过stopPropagation()阻止冒泡,但是我的我的用例是如果 $('#idDrag')绑定的是mousedown事件,不想出发父元素的click事件,该如何做到呢?
DEMO CODE
简易拖放效果
我想按住拖动元素放开了不触发DragContent的点击事件
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
用 jquery 实现了下, 没用拖动事件, 但是逻辑都是一样的, 可以改写成原生的 js , 实现方式就是在绑定 iddrag 事件的时候, 使用 return false 返回, 这样就不会继续像下触发, 所以 dragcontent 就不会被执行
同意楼上的
return false。DOM事件处理有三个阶段:在任意一个阶段的事件处理函数中,都可以通过调用
event.stopPropagation来中断事件流,后续的阶段将不会被调用。其实
return false做了三件事:stopPropagation():阻止事件传播preventDefault():禁止浏览器默认行为,比如<a>标签被点击后页面会跳转你还可以通过
delegate实现更加高效和简洁的事件处理过程,具体可以看这篇文章:jQuery事件:bind、delegate、on