gpt4 book ai didi

javascript - 元素移动时悬停不正确

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:58 25 4
gpt4 key购买 nike

我有一个动态 div,我想知道鼠标何时悬停在这个 div 上。我尝试使用 .is( ':hover' ) 但不起作用。

jsFiddle demo

在演示中,我制作了一个移动的 div,如果我不移动鼠标,则永远不会调用日志,但如果我手动将鼠标悬停在框上,它就会始终写入日志。

Never detected

从不在控制台中写入日志。

Always detected

一直在控制台写日志,连盒子都没有了。

这是一个错误还是我犯了错误?如何正确检测悬停?

最佳答案

您应该使用 mousemove() 跟踪鼠标移动事件并检查鼠标在 div 移动上的最后已知位置。

例子:

HTML 和 CSS:

.red-box {
display : inline-block;
position : absolute;
width : 50px;
height : 50px;
top : 10px;
left : 0px;
background-color : red;
}
#wrapper {
height: 100vh;
width: 100vw;
}

<div id="wrapper">
<div class="red-box"></div>
</div>

JavaScript:

var posX = 0;
var step = 10;
var maxX = 200;
var mouseX = -1;
var mouseY = -1;
var entered = false;
var $box = $('.red-box');

setInterval(function () {
posX += step;
if (posX >= maxX)
posX = 0;
$box.css("left", posX);

var top = $box.offset().top;
if (mouseX >= posX && mouseX <= (posX + $box.width()) && mouseY >= top && mouseY <= (top + $box.height())) {
console.log("mouse entered");
entered = true;
} else if (entered) {
console.log("mouse left");
entered = false;
}
}, 500);

$("#wrapper").on("mousemove", function (e) {
mouseX = e.pageX - $(this).position().left;
mouseY = e.pageY - $(this).position().top;
}).on("mouseleave", function()
{
mouseX = -1;
mouseY = -1;
});

FIDDLE

编辑:添加了一个新的 mouseleave()包装器的事件。

关于javascript - 元素移动时悬停不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com