2012-01-27 16 views
0

ULリストをスクロールするjQueryスクリプトを作成しましたが、問題はリストの現在のアイテムがホバリングされている場合にアニメーションを一時停止することです。mouseover/hoverでアニメーションを一時停止します

私はテロップ関数を毎秒呼び出すタイマーを持っています。新しいアイテムでリストを更新する更新機能は、アニメーションと何も関係がないので、それを含んでいません。

// Initiate a call to ticker every 1second 
    var tickerUpdateTimer = setInterval('ticker()', 1000); 

ティッカー機能は、私は誰かが私にはホバー/マウスオーバー、おかげで一時停止する私の機能を書き換えることができますことを願っています

function ticker() { 
    if ($('ul#ticker li:first').length == 0) 
     tickerUpdate(); 

     $.when(tickerSlideIn()).then(tickerSlideOut()); 
} 

function tickerSlideIn() { 
    $('ul#ticker li:first').show("slide", { direction: "down" }, tickerSpeed).delay(tickerPause); 
} 

function tickerSlideOut() { 
    $('ul#ticker li:first').hide("slide", { direction: "up" }, tickerSpeed, function() {$(this).remove();}); 
} 

のjQuery UIのスライド機能を使用しています。

+2

すでに尋ねたと答えメイト... http://stackoverflow.com/questions/5088766/the-way-to-stop-and- continue-animation-while-mouseover-and-mouseout-in-jquery – Archer

+0

ええと、そのプラグインのダウンロード場所が見つからないようです。しかし、そのプラグインを使わなければできないはずですか? ヘッドアップのおかげで、ここで多くの投稿を見てきましたが、それを見ませんでした。 – Zalon

+1

もちろん、プラグインがあるので、アニメーション機能の独自のバージョンを書き換える必要はありません。ネイティブの一時停止はありません/ jQueryのアニメーションのみの停止を続行します。 – Archer

答えて

0

あなたが任意のプラグインなしでそれを行うことができます。

var tickerUpdateTimer = setInterval('ticker()', 1000), paused = false; 

$('ul#ticker').hover(function(){ paused = true; }, 
         function(){ paused = false; }); 

function ticker() { 

    if (paused) return; 

    if ($('ul#ticker li:first').length == 0) 
     tickerUpdate(); 

     $.when(tickerSlideIn()).then(tickerSlideOut()); 
} 
+0

'setInterval( 'ticker()'、1000)' vs 'setInterval(function(){ticker();})? :) – Johan

+0

またはさらに良い 'setInterval(ticker、1000)' – Archer

+0

ああ、ありがとう - これは良い考えです!しかし、$ .when(tickerSlideIn())。then(tickerSlideOut());コールはすでにその時点で行われているため、テキストをスライドさせてもスライドさせることができます。一時停止した小切手をスライド機能に移動すると、次のように修正されます:) – Zalon

関連する問題