jQuery mouseove和mouseout事件不断触发
Posted dyegral
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery mouseove和mouseout事件不断触发相关的知识,希望对你有一定的参考价值。
关于锋利的jQuery第三章结尾提示图片效果(鼠标放在图片上会出现一个大图跟随鼠标移动)实现时mouseove和mouseout事件不断触发的问题
<ul class="box">
<li class="item"><img class="imgitem" src="./images/img (1).jpg" ></li>
<li class="item"><img class="imgitem" src="./images/img (2).jpg" ></li>
<li class="item"><img class="imgitem" src="./images/img (3).jpg" ></li>
<li class="item"><img class="imgitem" src="./images/img (4).jpg" ></li>
</ul>
js
$(function(){
var tooltip;
$(‘.imgitem‘).mouseover(function(e) {
tooltip = "<div id=‘tooltip‘><img src=‘" + $(this).attr(‘src‘) + " ‘></div>";
$(‘body‘).append(tooltip);
$(‘#tooltip‘).css({
"position": "fixed",
"top": e.pageY + "px",
"left": e.pageX + "px"
});
}).mousemove(function(e){
$(‘#tooltip‘).css({
"position": "fixed",
"top": e.pageY + "px",
"left": e.pageX + "px"
});
}).mouseout(function() {
$(‘#tooltip‘).remove();
});
})
跟书上的代码不太一样
我发现mouseover和mouseout事件不断出发,以至于造成鼠标旁边的大图不断闪烁,网上百度闪烁的原因是事件冒泡
但我试着把mouseover和mouseout事件名改为mouseenter和mouseleave后依旧不管用,想了很久才发现原因:
当鼠标进去某一张图片后,我设置大图出现的位置刚好是鼠标的位置,该位置上方是大图出现的位置,下面是原图,所以才会不断闪烁
解决方案:
$(‘#tooltip‘).css({
"position": "fixed",
"top": e.pageY + 10 + "px",
"left": e.pageX + 20 + "px"
});
让大图出现的位置不要刚好在鼠标的位置
以上是关于jQuery mouseove和mouseout事件不断触发的主要内容,如果未能解决你的问题,请参考以下文章
Jquery hover方法使用及 mouseenter与mouseleave和 mouseover与mouseout的区别
mouseover和mouseout事件在鼠标经过子元素时也会触发
jQuery - 具有多个 div 的 mouseover/mouseout
如何:在 mouseOver/mouseOut - JQuery .hover 上添加/删除类?