jQuery mouseove和mouseout事件不断触发

关于锋利的jQuery第三章结尾提示图片效果(鼠标放在图片上会出现一个大图跟随鼠标移动)实现时mouseove和mouseout事件不断触发的问题

html

<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"

});

让大图出现的位置不要刚好在鼠标的位置

原文地址:https://www.cnblogs.com/dyegral/p/10657643.html

时间: 2024-08-01 22:28:04

jQuery mouseove和mouseout事件不断触发的相关文章

关于jquery on方法进行事件绑定触发次数指数叠加的问题

发生环境: $modal.on('click', '#search',function(e){}); 上面代码的语法是这样的: .on( events [, selector ] [, data ], handler(eventObject) ) 其中$modal为父容器,在该容器上绑定click事件,当id为search的button被点击时才触发function 存在问题: 1. 点击第一次触发一次 2. 点击第二次触发两次 3. 点击第三次触发四次 ... 以此类推成指数增长 问题原因:o

mouseover和mouseout事件在鼠标经过子元素时也会触发

JavaScript的mouseover和mouseout事件,在绑定元素内部有子元素的情况下, 经过绑定元素时会多次触发mouseover和mouseout事件. jQuery解决办法: jquery的mouseenter和mouseleave方法已经修复了这个问题,可以直接用来替代mouseover和mouseout 不过有个mouseenter和mouseleave有个小问题是,让鼠标从文档外直接进入绑定事件的元素时,mouseenter不生效 暂时解决办法是,别让绑定事件的元素靠浏览器边

jquery如何阻止子元素相应mouseout事件

jquery如何阻止子元素相应mouseout事件:mouseout有一个特点,当鼠标移入子元素的时候,也会触发此事件,但是在实际应用中这个特点往往不是我们想要的,下面就通过代码实例介绍一下如何实现此效果,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://ww

jQuery中让点击事件只触发一次($(&quot;&quot;).one(&quot;click&quot;,function(){});)

有时候该按钮要求只能进行一次点击操作,又不想通过代码逻辑来处理,判断次按钮是否被触发过,就可以用这个小技巧来写 jQuery代码 $(function () { $(":button").one("click", function () { //事件只触发一次 alert("dianle") }); }); <body> <input type="button" value="click"

jquery:iframe里面的元素怎样触发父窗口元素的事件?

例如父窗口定义了一个事件. top: $(dom1).bind('topEvent', function(){}); 那么iframe里面的元素怎样触发父窗口dom1的事件呢?这样吗? $(dom1, parent.document).trigger('topEvent'); 看似正确,实则误导人. 因为父窗口的jquery对象与iframe里面的jquery对象实际为两个对象(function),iframe里面的jquery并不会触发另一个jquery对象定义的事件.除非你在iframe这样

jquery如何实现点击回车键触发事件

jquery如何实现点击回车键触发事件:有时候我们想点击回车的时候能够让代码去干一些事情,这个时候我们就需要判断按下的键是否是回车,下面就简单介绍一下如何实现此功能,核心代码如下: $(function (){ document.onkeydown=function(ev) { var ev =ev||window.event||arguments.callee.caller.arguments[0]; if(ev&&ev.keyCode==13) { //需要的操作代码 } } }) 代

jquery点击复选框触发事件给input赋值

体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jquery点击复选框触发事件给input赋值-柯乐义</title><base target="_blank" /> <sty

如何解决鼠标移动到子元素 会触发父元素的mouseout事件

方法一. 用mouseleave/mouseenter代替mouseover/mouseout[最佳方法] mouseover与mouseenter mouseover  => 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件.mouseenter => 只有在鼠标指针从元素外穿入被选元素(到元素内)时,才会触发 mouseenter 事件. mouseout与mouseleave mouseout => 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouse

Jquery on绑定的事件 触发多次

用‘on’函数为一个新增的按钮绑定了一个事件,这是事件会触发多次. <html> <head> <meta name="viewport" content="width=device-width" /> <title>码上飘</title> <script src="/FrontStyle/js/jquery-1.11.2.min.js" type="text/javas