2016-10-05 8 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

をmouseleaveことがあります。マウスが要素またはその子の1つに入る、または離れるたびに、mouseoverイベントがトリガーされます。これはmouseenterでは発生しません。 example hereにこれが表示されます。

this answerを参照してください。同様の質問と提供されている例のソースについては、

1

mouseoverイベントは、マウスがターゲット上にあるときに繰り返し送信されます。あなたは、MouseEnterイベントをしたいと $(document).on('mouseenter', '#myTarget', function() { にそれを変更すると良いだろう

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()はきちんとしていますが、この関数をもう一度呼び出せるようにする必要があります。この特定のケースでは、マウスセンターでその日を節約することができます。 .one()を推薦してくれてありがとう、私はそれを使ったことはないが、それは大きな可能性を秘めている。 – santa

+0

よかった、あなたの質問に間違いがあった – jonathanGB