2015-06-18 42 views
-1

這是我用來讓一些圖像在懸停時更改其src的代碼片段。在mouseenter/mouseleave上淡入/淡出,停止隊列

$(".social").on({ 
    mouseenter: function() { 
     $(this).data("original-src", $(this).attr("src")) 
      .fadeOut(250, function() { 
      $(this).attr("src", $(this).attr("data-src")); 
     }).fadeIn(250); 
    }, 
    mouseleave: function() { 
     $(this).fadeOut(250, function() { 
      $(this).attr("src", $(this).data("original-src")); 
     }).fadeIn(250); 
    } 
}); 

有一個問題,當你通過鼠標滑過多次,動畫重複和隊列轉爲瘋了..看到這段視頻:http://youtu.be/dTYhbcQM3tI 我怎樣才能避免這種情況?我嘗試了.stop(),但似乎沒有正常工作。

這裏是基地的jsfiddle: http://jsfiddle.net/HpmN7/925/

+2

SVG圖標和位的CSS可以爲您節省大量的頭痛。 –

+0

它看起來像這個問題: http://stackoverflow.com/questions/2805906/jquery-stop-fadein-fadeout – Mehdi

回答

1

使用stop(true, true)(?清除隊列真,跳轉到年底真)

$(".social").on({ 
    mouseenter: function() { 
     $(this).data("original-src", $(this).attr("src")) 
      .stop(true, true).fadeOut(250, function() { 
      $(this).attr("src", $(this).attr("data-src")); 
     }).fadeIn(250); 
    }, 
    mouseleave: function() { 
     $(this).stop(true, true).fadeOut(250, function() { 
      $(this).attr("src", $(this).data("original-src")); 
     }).fadeIn(250); 
    } 
}); 
+0

是的!有用。謝謝!將在2分鐘內批准 – MultiformeIngegno

0

可以,只要你的MouseEnter,然後再創建動畫清除動畫隊列。就像這樣:

$(".social").on({ 
    mouseenter: function() { 
     $(this).finish(); 
     $(this).data("original-src", $(this).attr("src")) 
      .fadeOut(250, function() { 
      $(this).attr("src", $(this).attr("data-src")); 
     }).fadeIn(250); 
    }, 
    mouseleave: function() { 
     $(this).fadeOut(250, function() { 
      $(this).attr("src", $(this).data("original-src")); 
     }).fadeIn(250); 
    } 
});