1. 程式人生 > >jQuery mouseove和mouseout事件不斷觸發

jQuery mouseove和mouseout事件不斷觸發

clas mov app rem 圖片效果 info remove bsp jquer

關於鋒利的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" }); 讓大圖出現的位置不要剛好在鼠標的位置

jQuery mouseove和mouseout事件不斷觸發