2

このスクリプトがあり、$ play変数を関数として呼び出すことができる必要があります。つまり、設定された間隔を再開する必要があります。一時停止関数は正常に機能しますが、再生をクリックしても再開できません。

    if( itemsCount > 1 ) {
        // addNavigation
        var $navPlay= $('body').find('.play'),
        $navPause= $('body').find('.pause'),
        $imgWrapper= $rgGallery.find('div.rg-image'),
        $play = window.setInterval(function(){
            _navigate('right');
        }, 500);

        $navPlay.on('click', function( event ) {
            $play;
            return false;
        });

        $navPause.on('click', function( event ) {
            clearInterval($play);
            return false;
        });
    }
},
4

2 に答える 2

2

ユースケースに似たものを複製するための例を作成する時間が正確にありませんでしたが、これらの線に沿った何かが行う必要があります。

    function starter() {
        return (window.setInterval(function () {
            _navigate('right');
        }, 500));
    }

    // stuff
    if( itemsCount > 1 ) {
            // addNavigation
            var $navPlay        = $('body').find('.play'),
                $navPause       = $('body').find('.pause'),
                $imgWrapper     = $rgGallery.find('div.rg-image'),
                $play           = starter(); // auto-start (set to null if not desired)

            $navPlay.on('click', function( event ) {
                if (!$play) { // probably don't want to set this twice
                  $play = starter();
                }
                return false;
            });

            $navPause.on('click', function( event ) {
                if ($play) {
                    clearInterval($play);
                    $play = null;
                }
                return false;
            });
    }           
    // stuff
于 2012-06-16T00:10:24.103 に答える
2

変数を関数として使用したい場合は、function(){}

if (itemsCount > 1) {
    // addNavigation
    var timeout,
        $navPlay = $('body').find('.play'),
        $navPause = $('body').find('.pause'),
        $imgWrapper = $rgGallery.find('div.rg-image'),
        $play = function () {
            timeout = window.setInterval(function () {
                _navigate('right');
            }, 500);
        };

    $navPlay.on('click', function (event) {
        $play();
        return false;
    });

    $navPause.on('click', function (event) {
        clearInterval(timeout);
        return false;
    });
}

通常の関数と同じように括弧内に変数を追加でき、うまく機能します。また、グローバルに実行できる別の変数をタイムアウトします。

于 2012-06-16T00:14:24.783 に答える