我有以下HTML结构,并且我已将dragenter
和dragleave
事件附加到<div id="dropzone">
元素.
<div id="dropzone">
<div id="dropzone-content">
<div id="drag-n-drop">
<div class="text">this is some text</div>
<div class="text">this is a container with text and images</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
当我将文件拖过时<div id="dropzone">
,dragenter
事件将按预期触发.但是,当我将鼠标移到子元素上时,例如<div id="drag-n-drop">
,dragenter
为<div id="drag-n-drop">
元素dragleave
触发事件,然后为该<div id="dropzone">
元素触发事件.
如果我<div id="dropzone">
再次将鼠标悬停在该元素上,dragenter
则会再次触发该事件,这很酷,但随后dragleave
会为刚刚离开的子元素触发事件,因此removeClass
执行该指令,这并不酷.
出于以下原因,此行为存在问题:
我只安装dragenter
及dragleave
到<div id="dropzone">
,所以我不明白为什么孩子要素附上以及这些事件.
我仍然<div id="dropzone">
在徘徊在它的孩子上时拖着元素,所以我不想dragleave
开火!
这里有一个jsFiddle修补:http …
我在Canvas上有一个拖放操作,当一个对象被拖入和拖出时,它应该做某事.我的问题是DragEnter/DragLeave事件在鼠标移动对象时继续触发,而不仅仅是在进入/退出时.鼠标移动得越快,事件发生的频率就越高.
Canvas DragOver事件移动了DraggedObject的Canvas.Top/Left,我认为这可能是我的问题,但我不知道如何解决这个问题.