我在Google上搜索了几个答案,但它们都涉及到点击或移动鼠标的事件,这与我的问题不适用。基本上,我允许用户从一个列表中拖拽一个项目并将其放置在另一个列表中的文件夹中,我想要在拖动项经过时高亮显示该元素(在文件夹列表中)。在文件夹列表上监听mouseenter和mouseleave事件不起作用。我尝试使用拖动事件(jQuery UI的Draggable drag)中的document.elementFromPoint,但不幸的是它返回的是辅助元素而不是文件夹列表中的元素。我认为这是正确的行为,因为document.elementFromPoint返回鼠标指针下面最顶层的元素。但这并不能解决我的问题:(。
$("#filelist li").draggable({
helper: "clone",
drag: function (event, ui) {
console.log(event.pageX, event.pageY);
var element = document.elementFromPoint(event.pageX, event.pageY);
// element is helper element, instead of actual element under cursor which I want.
}
});
$("#folderlist").droppable({
drop: function (event, ui) {
}
});
// These mouse events won't be triggered while dragging an item.
$("#folderlist").on({
"mouseenter": function (event) {
this.style.backgroundColor = "#1c70cf";
},
"mouseleave": function (event) {
this.style.backgroundColor = "";
}
}, "li");
#folderlist
是什么?你可以使用dragover
/dragleave
事件。 - Luizgrs