2

スライドショーがホバーされているときにのみjQueryCycleを実行しようとしています(これは、スライドショーに組み込まれている機能の反対です)。

ここに私がいます:http://jsfiddle.net/zSBMU/

$(document).ready(function() {

$('.slideshow').hover(
    function() {
        $(this).cycle({
            fx:     'fade',
            speed:   600,
            timeout: 300,
            pause:   0
        });
    },
    function(){
        $(this).cycle('stop');
    }
).trigger('hover');

});

初めてホバーすると、それは素晴らしいです、うまく機能します。ただし、同じものをもう一度ホバーしようとすると、もう一度ループするのではなく、1回だけフェードします。

何か案は?

ここでかなり古いテーマを使用して、それをクリーンアップしようとしているグロスコードの一部を無視してください!

4

1 に答える 1

2

「停止」を使用してサイクルを再作成しているため、オブジェクトにいくつかのサイクルを追加しています。

「一時停止」と「再開」を使用する必要があります。

以下の例:

var cycleConfigured = false;
$(document).ready(function() {

    $('.slideshow').hover(
        function() {
            if(cycleConfigured)
                $(this).cycle('resume');
            else
            {
                $(this).cycle({
                    fx:     'fade',
                    speed:   600,
                    timeout: 300,
                    pause:   0
                });
                cycleConfigured = true;
            }
        },
        function(){
            $(this).cycle('pause');
        }
    ).trigger('hover');

});​

変数cycleConfiguredは、サイクルプラグインを制御し、すでにインスタンス化されているかどうかを確認するために使用されます。または$(document).ready()、次のように作成して一時停止することもできます。

$(document).ready(function() {
    // configure the cycle plugin
    $('.slideshow').cycle({
         fx:     'fade',
         speed:   600,
         timeout: 300,
         pause:   0
    });
    $('.slideshow').cycle('pause'); // pause it right away.

    $('.slideshow').hover(
        function() {
                $(this).cycle('resume'); // start playing.
        },
        function(){
            $(this).cycle('pause'); // pause the slideshow.
        }
    ).trigger('hover');

});​

その後、あなたがする必要があるすべては、何度も何度も使用すること$(this).cycle('pause')です$(this).cycle('resume')

何でも教えてください。

于 2012-04-17T21:46:47.910 に答える