2012-04-04 58 views

回答

0

用鼠標這樣離開

$('.container') 
     .mouseover(function(){ 
      $('.box2').stop(true, true).animate({top:0}, 150); 
     }) 
     .mouseleave(function(){ 
      $('.box2').stop(true, true).animate({top:40}, 150); 
     }) 
     ; 

的多個實例嘗試這個

$('.container').each(function() { 
     var c = $(this); 
     var box = c.find('.box2'); 

     c.   
      mouseover(function(){ 
      box.stop(true, true).animate({top:0}, 150); 
      }) 
      .mouseleave(function(){ 
      box.stop(true, true).animate({top:40}, 150); 
      }); 
    }); 
+0

這是行得通的。怎麼樣在同一頁上的多個實例? – Andy 2012-04-04 09:49:49

+0

@Andy whatch我的評論 – silly 2012-04-04 09:53:11

3

使用mouseentermouseleave而不是mouseovermouseout

mouseout在遊標進入父div的另一個子元素時觸發。

1

這是你想要的嗎?

http://jsfiddle.net/UhNHW/20/

我基本上添加一個檢查.box2是否正在動畫,如果是這樣,只是沒有返回任何東西。

$(function() { 
    $('.container').on('mouseenter', function() { 
     var box = $(this).find('.box2'); 
     if(box.is(':animated')) return false; 
     box.stop(true, true).animate({ 
      top: 0 
     }, 150); 
    }); 
    $('.container').on('mouseleave', function() { 
     var box = $(this).find('.box2'); 
     if(box.is(':animated')) return false; 
     box.stop(true, true).animate({ 
      top: 40 
     }, 150); 
    }); 
});​ 
+0

任何想法如何處理同一頁面上的多個實例?我知道我需要一個(。$ this)的地方。 – Andy 2012-04-04 09:51:26

+0

@安迪編輯我的答案,看到新的小提琴 – 2012-04-04 09:58:52