2016-10-05 74 views
1

我使用jQuery .animate()來移動一個項目,但它似乎以100px的增量多次移動。是因爲鼠標懸停嗎?僅動畫一次

var ww = $(window).width(); 

$(document).on('mouseover', '#myTarget', function() { 
    var dp = $(this).offset().left; 

    if ((ww - dp) < 150) { 
     $('.myDiv.active').animate({left:'-=100px'},500); 
    } 
}); 
+0

是的,這是因爲鼠標懸停。 –

+0

您的實施似乎沒有問題。看看這個:https://jsfiddle.net/1hpfo1h7/1/ – DinoMyte

回答

1

改變它 $(document).on('mouseenter', '#myTarget', function() { 會更好。每當鼠標進入或離開元素或其中一個子元素時,觸發事件mouseover。這不會發生在mouseenter example here顯示了這一點。

請參閱this answer瞭解相似的問題以及所提供示例的來源。

1

當鼠標懸停在目標上時,會重複發送鼠標懸停事件。你可能想的mouseenter和鼠標離開

1

使用jquery.one

$(document).one('mouseover', '#myTarget', function() { 
    var dp = $(this).offset().left; 

    if ((ww - dp) < 150) { 
    $('.myDiv.active').animate({left:'-=100px'},500); 
    } 
}); 
+0

.one()很整潔,但我需要能夠再次調用這個函數,所以在這個特殊情況下,mouseenter可以節省一天的時間。感謝您推薦.one(),我從來沒有使用它,但它有很大的潛力。 – santa

+0

好,很好,誤解了你的問題 – jonathanGB