我正在使用HTML5的拖放事件在单页应用程序中。
目前,我正在监听dragleave和dragenter事件,以在元素上设置正确的类。
但是,当两个有效的目标元素(A和B)相邻时,我们将一个元素从A拖到B时,事件的触发顺序如下。
目前,我正在监听dragleave和dragenter事件,以在元素上设置正确的类。
但是,当两个有效的目标元素(A和B)相邻时,我们将一个元素从A拖到B时,事件的触发顺序如下。
+--------------+-------------+
| | |
+-------+ | A | B |
| | | | |
| Elem +------------------------------------> |
| | | | |
+-------+ | | |
+--------------+-------------+
A
的dragenter
B
的dragenter
A
的dragleave
预期的事件顺序应该是这样的:
A
的dragenter
A
的dragleave
B
的dragenter
我认为这应该是正确的顺序,因为项目必须在进入 B
之前离开 A
。我是否遗漏了什么?为什么 dragenter
会在 dragleave
之前触发?是否有一种方法可以更改这种行为?
我在 JSFiddle 中提供了代码这里。
代码本身非常简单,只需要监听 dragenter
和 dragover
事件即可。
dragenter: function(e) {
console.log("basket dragenter");
// logic here
},
dragleave: function(e) {
console.log("basket dragleave");
// logic here
},