Javascript 拖动html元素时检测mouseenter事件

Javascript 拖动html元素时检测mouseenter事件,javascript,html,drag-and-drop,Javascript,Html,Drag And Drop,我正在尝试使用统一的正方形图像制作一种拖放拼图网站,我已经编写了拖动代码,通过它们的元素拖动单个图像 但是我注意到,当将元素拖到另一个附加了addEventListener(“mousenter”,function(){//code};)的元素上时,mouseenter事件不会触发。如果我在元素上移动鼠标而不拖动图像,则事件将正常激发 有人对如何解决这个问题有什么想法吗?我唯一的猜测是元素阻止了侦听器看到鼠标 var dragImg=document.querySelector(“.images

我正在尝试使用统一的正方形图像制作一种拖放拼图网站,我已经编写了拖动代码,通过它们的
元素拖动单个图像

但是我注意到,当将
元素拖到另一个附加了
addEventListener(“mousenter”,function(){//code};)
的元素上时,mouseenter事件不会触发。如果我在元素上移动鼠标而不拖动图像,则事件将正常激发

有人对如何解决这个问题有什么想法吗?我唯一的猜测是
元素阻止了侦听器看到鼠标

var dragImg=document.querySelector(“.images img”);
Dragim.addEventListener(“mousedown”,函数(){
console.log(“检测到鼠标向下”+dragim.clientHeight);
dragImg.setAttribute(“id”,“drag”);
拖动=真;
});
Dragim.addEventListener(“mousemove”,函数(事件){
如果(拖动){
dragImg.style.top=(event.clientY-dragImg.clientHeight/2)+“px”;
dragImg.style.left=(event.clientX-dragImg.clientWidth/2)+“px”;
}
});
Dragim.addEventListener(“mouseup”,函数(){
console.log(“检测到鼠标悬停”);
拖动=假;
//如果不在剪贴板中,则重置位置
删除属性(“id”);
dragImg.style.top=“”;
dragImg.style.left=“”;
});
//剪贴板行为-此侦听器在拖动img时不会触发?
var clipboard=document.querySelector(“.clipboard”);
剪贴板.addEventListener(“鼠标悬停”,函数(){
如果(拖动){
log(“鼠标进入剪贴板!”);
clipboard.style.backgroundColor=“红色”;
}
});
#拖动{
位置:绝对位置;
}

问题在于鼠标从未在
.clipboard
上悬停,因为图像总是在指针下方

简单的解决方案是添加(旧浏览器不支持)

var dragImg=document.querySelector(“.images img”);
var=false;
Dragim.addEventListener(“鼠标向下”,函数(事件){
event.stopPropagation();
console.log(“检测到鼠标向下”+dragim.clientHeight);
dragImg.setAttribute(“id”,“drag”);
拖动=真;
document.addEventListener('mousedown',函数documentMouseDown(){
如果(拖动){
删除属性(“id”);
拖动=假;
document.removeEventListener('mousedown',documentMouseDown);
}
});
});
document.addEventListener(“mousemove”,函数(事件){
如果(拖动){
dragImg.style.top=(event.clientY-dragImg.clientHeight/2)+“px”;
dragImg.style.left=(event.clientX-dragImg.clientWidth/2)+“px”;
}
});
Dragim.addEventListener(“mouseup”,函数(){
console.log(“检测到鼠标悬停”);
拖动=假;
//如果不在剪贴板中,则重置位置
删除属性(“id”);
dragImg.style.top=“”;
dragImg.style.left=“”;
});
//剪贴板行为-此侦听器在拖动img时不会触发?
var clipboard=document.querySelector(“.clipboard”);
剪贴板.addEventListener(“鼠标悬停”,函数(){
如果(拖动){
log(“鼠标进入剪贴板!”);
clipboard.style.backgroundColor=“红色”;
}
});
#拖动{
位置:绝对位置;
指针事件:无;
}
.剪贴板{
宽度:200px;
高度:200px;
背景:绿色;
}
img{
-webkit用户选择:无;
}


我花了一点时间查阅了一些资料,了解了您所做的工作,但效果很好。非常感谢。非常有用的提示!当我拖动时,
:hover
不再工作,这让我很恼火。只需在css文件中为JQuery中的
ui拖动类添加
指针事件:none
,非常简单。