繁体   English   中英

当父项可拖动时,防止拖动子元素

[英]Prevent child element from being dragged when parent is draggable

我有以下HTML(反应)设置:

<div 
    onDragStart={
    (e) => { this.bound_handleDragStart.call(this, e) }}        
    draggable="true"
>
   <div>Stuff here</div>
   <div><input .../></div>
</div>

此设置使整个外部div可拖动。

但是,如果在输入上开始拖动,我希望它被取消。

我已经尝试将onDragStart添加到输入中,将eventListener添加到输入并返回false,禁止在句柄拖动开始时传播,以及许多其他事情,但它们都不起作用。

作为一个not,当event.target返回外部div时,所以我找不到一种方法来计算哪个孩子开始拖动。

我相信这可以做到并且不能太难?

我已经考虑过将拖动移动到所有内部div,但我不确定这是否能解决我的问题,或者创建一组全新的问题,而且我觉得这不是正确的方法

信不信由你,但实际上你需要在输入上设置draggable="true" ,然后在运行event.preventDefault()的输入上为dragstart添加一个事件处理程序:

<div 
    onDragStart={
    (e) => { this.bound_handleDragStart.call(this, e) }}        
    draggable="true"
>
   <div>Stuff here</div>
   <div><input draggable="true" onDragStart={
     (e) => e.preventDefault()
   }/></div>
</div>

这将阻止实际拖动,但父级上的dragstart事件仍将被触发,因为它会冒泡。 如果你想要阻止它,你还需要调用event.stopPropagation()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM