2017-07-11 85 views
0

时防止父点击事件如果你想有一个子元素中点击不要泡到其父母,你可以使用停止冒泡stopPropagation如何从孩子拖到父

<div class="parent"> 
    <div class="child"></div> 
</div> 

document.querySelector('.parent').addEventListener('click',()=> { .. } 
document.querySelector('.child').addEventListener('click',()=> { .. } 

DEMO

但当点击开始于孩子内部并在外部结束时,如何防止父母点击。换句话说:mousedown孩子,那么mousemove,该移动指针孩子之外(但父内),然后mouseup,在这种情况下,我不想

对我来说最重要的事情,是里面父母点击,有什么建议?

更新:如果您还记得mousedown目标,您可以在父级点击回调中使用此项:DEMO。但我希望有更好的解决方案

+1

注意firefox中的行为与chrome不同。在mouseup发生时,父级点击不会在Firefox中触发 – charlietfl

+0

我在Chrome中进行测试:)但FF显示我需要的行为! –

+0

对......我想到了。自从我第一次在Firefox中检查演示后,我开始感到困惑,并且在那里似乎很好 – charlietfl

回答

0

我希望我明白你的问题。您正在寻找一种事件或某种类型的方法,可以让您始终查找单击的第一个值。 e.stopPropagation()&捕获属性作为事件侦听器的第三个参数也不起作用。

我在做什么的同时会在侦听器范围外添加一个额外的变量。 onClick可以将该变量分配给您点击的任何项目。

或者您可以将您的点击处理程序修改为'mousedown.'这样,用户拖动它们首次点击的部分就没有关系。第二个用户停下来,他们将触发该事件。