调用var是函数

时间:2012-06-16 00:04:44

标签: jquery function setinterval var

我有这个脚本,并且需要能够将$ 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;
        });
    }
},

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;
    });
}

您可以在括号中添加变量,就像普通函数一样,效果很好。还可以为超时提供一个可以全局使用的单独变量。