Javascript 防止在父元素可拖动时拖动子元素
我有以下HTML(react)设置:Javascript 防止在父元素可拖动时拖动子元素,javascript,html,reactjs,events,drag,Javascript,Html,Reactjs,Events,Drag,我有以下HTML(react)设置: {this.bound\u handleDragStart.call(this,e)} draggable=“true” > 这里的东西 此设置使整个外部分区可拖动 但是,如果拖动从输入开始,我希望它被取消 我尝试过向输入中添加onDragStart、向输入中添加eventListener并返回false、禁用句柄DragStart上的propogation以及许多其他功能,但都不起作用 作为not,whenevent.target返回外部div,因此我无
{this.bound\u handleDragStart.call(this,e)}
draggable=“true”
>
这里的东西
此设置使整个外部分区可拖动
但是,如果拖动从输入开始,我希望它被取消
我尝试过向输入中添加onDragStart、向输入中添加eventListener并返回false、禁用句柄DragStart上的propogation以及许多其他功能,但都不起作用
作为not,whenevent.target
返回外部div,因此我无法找到一种方法来确定是哪个子级开始拖动
我相信这是可以做到的,也不会太难
我曾考虑过将拖动移动到所有内部div,但我不确定这是否会解决我的问题,或者创建一组全新的问题,而且我觉得这不是正确的方法,信不信由你,但实际上需要设置
draggable=“true”
,然后在运行event.preventDefault()的输入上为dragstart
添加事件处理程序:
{this.bound\u handleDragStart.call(this,e)}
draggable=“true”
>
这里的东西
e、 预防默认值()
}/>
这将阻止实际拖动,但父级上的dragstart
事件仍将被触发,因为它会冒泡。如果您也想防止这种情况发生,还需要调用事件。stopPropagation()
拖动将拖动子对象。怎么可能不呢?要检查从中拖动的子对象,这不是target
提供给您的吗?但是如果拖动事件在子对象上启动,我希望取消拖动事件。正常情况下,取消默认值并防止传播应该可以做到这一点。
<div
onDragStart={
(e) => { this.bound_handleDragStart.call(this, e) }}
draggable="true"
>
<div>Stuff here</div>
<div><input .../></div>
</div>
<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>