使用.mouseleave()
代替.mouseout()
http://jsfiddle.net/uqgz9/4/
var imgW;
$('.brand-box-item').mouseenter(function(){
if($(this).find('img').is(':animated') === false)
imgW = $(this).find('img').width();
$(this).find('img').stop().animate({'width':'0','margin-left':(imgW/2)+'px'},function(){
$(this).css({'margin-top':'-40px'});
$(this).stop().animate({'width':imgW+'px','margin-left':'0'});
});
});
$('.brand-box-item').mouseleave(function(){
$(this).find('img').stop().animate({'width':'0','margin-left':(imgW/2)+'px'},function(){
$(this).css({'margin-top':'0'});
$(this).animate({'width':imgW+'px','margin-left':'0'});
});
});
「MouseLeave事件從鼠標移開的不同之處它處理事件冒泡的方式。如果鼠標移出,在此例子中使用,那麼當鼠標指針移出Inner元素時,處理程序將被觸發,這通常是不受歡迎的行爲,另一方面,mouseleave事件只在鼠標離開綁定的元素時觸發其處理程序,而不是後代。例如,手柄當鼠標離開外部元素時觸發er,但不是內部元素。「 -jQuery文檔
完美測試!我知道這是一件小事。代碼主演的影響太長了。大聲笑 – dcp3450 2012-08-06 00:24:11
@ dcp3450沒問題。另外,由於您確實需要懸停的處理程序,因此jQuery具有以下兩個快捷方式的功能:http://api.jquery.com/hover/ – nbrooks 2012-08-06 01:08:02