我有这个脚本,并且需要能够将$ 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;
});
}
},
答案 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;
});
}
您可以在括号中添加变量,就像普通函数一样,效果很好。还可以为超时提供一个可以全局使用的单独变量。