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 回答