2011-01-22 9 views
4

私はいくつかの画像スライドをループするためにsetIntervalを使用しているjQuery/JS関数を持っています。それはちょうど5秒ごとに反転します...jQueryのホバー機能が一時停止していますか?

私のマウスがそれの上にぶら下がっている場合、私はそれを一時停止します。 setInterval関数でこれをどうやって行うのですか?

var current = 1; 

function autoAdvance() { 
    if (current == -1) return false; 

    jQuery('#slide_menu ul li a').eq(current % jQuery('#slide_menu ul li a').length).trigger('click', [true]); 
    current++; 
} 

// The number of seconds that the slider will auto-advance in: 
var changeEvery = jQuery(".interval").val(); 
if (changeEvery <= 0) { 
    changeEvery = 10; 
} 
var itvl = setInterval(function() { 
    autoAdvance() 
}, changeEvery * 1000); 

答えて

4

このような何かがintervalは、外側のスコープで定義されていると仮定すると動作します:

$('.slideshow img').hover(function() { 
    interval = clearInterval(interval); 
}, function() { 
    interval = setInterval(flip, 5000); 
}); 
+0

私はそれを試しましたが、私のコードは正確に正統ではないので動作しないと思っていました...コードを更新した投稿を見てください。画像を反転するために使用しています... –

+0

Ok nevermind ...私はそれが働くようになった...助けてくれてありがとう! –

3
(function() { 
    var imgs = $('#your_div img'), index = 0, interval, 

     interval_function = function() { 
      imgs.eq(index).hide(); 
      index = (index + 1) % imgs.length; 
      imgs.eq(index).show(); 
     }; 

    imgs.eq(0).show(); 
    interval = setInterval(interval_function, 5000); 

    $('#your_div').hover(function() { 
     clearInterval(interval); 
    }, function() { 
     interval = setInterval(interval_function, 5000); 
    }); 
}()); 

例:http://jsfiddle.net/Zq7KB/3/

私は他の質問のために書いたいくつかの古いコードを再利用私はそれほど重要ではないと思った。トリックは、バックグラウンドで保持する変数に間隔を格納することです。次に、コンテナの上にマウスを移動したら、間隔をクリアします。コンテナから外に出たときに、間隔を再設定します。これがどのように機能するかをより良く知るには、50001000に変更してください。

これが役に立ちます。

+0

私は 'interval_function'がグローバルであることを指摘するつもりでしたが、前の行のカンマを見ました... –

+0

コメントありがとう... –

+0

これは助けてくれてありがとう、ありがとう。 –

関連する問題