在dropzone
中有两个嵌套元素,并从外部元素拖动到内部元素,dragleave
操作优先于dragenter
。
我最初有一个dropzone
格,它在dragenter上更改了类('canDrop')来指示是否可以放下,而在dragleave上该类恢复为中性('plainDropZone')。
放下后,draggable
div成为dropzone
div的子级。现在,当另一个draggable
输入dropzone
时,类将更改为'noDrop',以指示无法再进行丢弃。在dragleave
上,类又恢复为中立状态(“ plainDropZone”)
问题:从外部dropzone
div拖动到内部放置的div时,外部dropzone
div不应恢复为中性,但仍具有“ noDrop”类。
据我所知,这无法按预期工作,因为从外部div到内部div时,dragleave
在dragenter
之后被解雇。该线程很好地形象地显示了问题:HTML 5 drag events: 'dragleave' fired after 'dragenter'
这是完整的演示:https://jsfiddle.net/e12uadgh/
因此,当外部dropzone
div具有内部div且用户将第三个div从外部dropzone
div拖放到内部div时,如何将外部{{1}} div分配为类'noDrop' div?
答案 0 :(得分:1)
找到一种实现效果的方法。当将元素从外部dropzone div拖动到内部dropzone div时,外部div的dragleave
在内部div的dragenter
之后被触发,因此dragenter
上的任何更改都将被对dragleave
。
因此,一种解决方案是,如果下一个事件目标不是内部div,则仅对dragleave
进行更改。由于无法通过检查event.target
上的dragleave
来完成,因此我们可以改用一个切换,该切换在内部div上的dragenter
上设置为true,而在{{1 }}在内部div上。