gpt4 book ai didi

javascript - Mousemove 延迟触发 mouseleave 事件

转载 作者:行者123 更新时间:2023-11-30 00:09:16 28 4
gpt4 key购买 nike

对 jQuery 鼠标事件感到有些奇怪。检查 jsFiddle:https://jsfiddle.net/Lb8r3907/1/

我想要实现的是一个内部元素,当鼠标悬停在它上面时,指针元素将跟随您的光标,当您将鼠标移出内部元素时,指针就会隐藏。

我有一个填充屏幕的外部元素,鼠标进入/离开此元素会显示和隐藏将跟随光标的指针元素。

$(function() {
$('.outer').on('mouseenter', function(){
console.log('MOUSE OVER OUTER!!');
if($('.pointer').is(':visible')){
$('.pointer').fadeOut(50);
}
});
//
$('.outer').on('mouseleave', function(){
console.log('MOUSE OUT OF OUTER!!!');
if(!$('.pointer').is(':visible')){
$('.pointer').fadeIn(50);
}
});
//
$('.inner').on('mousemove', function(e){
var mX = e.pageX-$('.inner').offset().left,
mY = e.pageY-$('.inner').offset().top;
$('.pointer').css({"top": mY+"px", "left": mX+"px"});
});
});
.outer { position:absolute; display:block; z-index:0; top:0px; left:0px; width:100%; height:100%; background-color:rgba(255,0,0,0.5); }
.inner { position:absolute; display:block; z-index:1; top:50%; left:50%; width:50%; height:25%; margin-top:-12.5%; margin-left:-25%; background-color:#fff; }
.inner .pointer { display:block; position:absolute; top:50%; left:50%; width:50px; height:50px; background-color:blue; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<body>
<div class="outer"></div>
<div class="inner">
<div class="pointer" style="display:none;"></div>
</div>
</body>

真正奇怪的是,当 mousemove 事件被激活时,它似乎延迟了 mouseleave 事件的触发。

我还注意到,延迟似乎只发生在您将鼠标移到内部元素的右侧或底部边缘时。

任何人都可以提供任何关于为什么会发生这种情况的见解吗?我真的很想知道如何解决这个问题,或者它是否是浏览器/jQuery 中的错误。

最佳答案

您的“指针”正在消耗一些用于“外部”元素的事件。尝试在光标和指针之间留出一些间距。当您将鼠标移到外部时,该空格应有助于使指针远离,以便外部按预期获取其事件

$('.pointer').css({"top": mY+2+"px", "left": mX+2+"px"});

此更改 Should work更好。

关于javascript - Mousemove 延迟触发 mouseleave 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37171912/

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