检查鼠标是否在div内

Maa*_*sen 10 javascript jquery if-statement mouseover

我想使用if语句来检查鼠标是否在某个div中,如下所示:

if ( mouse is inside #element ) {
 // do something
} else {
 return;
}
Run Code Online (Sandbox Code Playgroud)

这将导致函数在鼠标位于#element内时启动,并在鼠标位于#element外时停止.

or *_*hor 13

你可以注册jQuery处理程序:

var isOnDiv = false;
$(yourDiv).mouseenter(function(){isOnDiv=true;});
$(yourDiv).mouseleave(function(){isOnDiv=false;});
Run Code Online (Sandbox Code Playgroud)

没有jQuery替代品:

document.getElementById("element").addEventListener("mouseenter", function(  ) {isOnDiv=true;});
document.getElementById("element").addEventListener("mouseout", function(  ) {isOnDiv=false;});
Run Code Online (Sandbox Code Playgroud)

和某处:

if ( isOnDiv===true ) {
 // do something
} else {
 return;
}
Run Code Online (Sandbox Code Playgroud)

  • 这依赖于这些事件的触发,当 z 平面上有重叠元素时,这是不可靠的。 (2认同)
  • 如果另一个元素直接位于您正在测试的元素上方,则此操作将会失败。 (2认同)

GMc*_*ris 12

嗯,那是什么事件的目的.只需将事件监听器附加到要监视的div即可.

var div = document.getElementById('myDiv');
div.addEventListener('mouseenter', function(){
  // stuff to do when the mouse enters this div
}, false);
Run Code Online (Sandbox Code Playgroud)

如果你想使用数学做,你仍然需要在父元素或其他东西上有一个事件,以便能够获得鼠标坐标,然后将其存储在一个事件对象中,并传递给回调.

var body = document.getElementsByTagName('body');
var divRect = document.getElementById('myDiv').getBoundingClientRect();
body.addEventListener('mousemove', function(event){
  if (event.clientX >= divRect.left && event.clientX <= divRect.right &&
      event.clientY >= divRect.top && event.clientY <= divRect.bottom) {
      // Mouse is inside element.
    }
}, false);
Run Code Online (Sandbox Code Playgroud)

但最好使用上述方法.


小智 10

简单地你可以使用这个:

var element = document.getElementById("myId");
if (element.parentNode.querySelector(":hover") == element) {
    //Mouse is inside element
} else {
    //Mouse is outside element
}
Run Code Online (Sandbox Code Playgroud)

使用评论改进

const element = document.getElementById("myId");
if (element.parentNode.matches(":hover")) {
    //Mouse is inside element
} else {
    //Mouse is outside element
}
Run Code Online (Sandbox Code Playgroud)

  • 在现代浏览器中,您只需执行“element.matches(':hover')”即可 (4认同)