我正在使用Infinite Loop function,它根据我的需要进行了一些修改:
$(document).ready(function() {
var NewsRotator = {init: function()
{
var numberOfTitles = $('.NewsRotator li').length;
//set current item
var currentTitle = 0;
//show first item
$('.NewsRotator li').eq(currentTitle).fadeIn(1000); //initial fade-in
//loop through the items
var infiniteLoop = setInterval(function(){
$('.NewsRotator li').eq(currentTitle).fadeOut(100); //current item fade-out time
if(currentTitle == numberOfTitles -1){
currentTitle = 0;
}else{
currentTitle++;
}
$('.NewsRotator li').eq(currentTitle).fadeIn(900); //next item fade-in time
}, 3000); //interval between items
}
};
NewsRotator.init();
});
以下是jsFiddle
上的工作示例我想要做的是在鼠标悬停时设置动画暂停,并在鼠标离开时恢复。
谢谢!
答案 0 :(得分:3)
以下是设置全局标记以在悬停时暂停和播放的方法,以及jsFiddle。
var NewsRotator = (function(){
var numberOfTitles = $('.NewsRotator li').length,
currentTitle = 0;
return {
flag : true,
init : function(){
$('.NewsRotator').on({
mouseenter : function(){
NewsRotator.flag = false;
},
mouseleave : function(){
NewsRotator.flag = true;
}
});
$('.NewsRotator li').eq(currentTitle).fadeIn(1000);
infiniteLoop = setInterval(function () {
if (NewsRotator.flag == true){
$('.NewsRotator li').eq(currentTitle).fadeOut(100);
if (currentTitle == numberOfTitles - 1) {
currentTitle = 0;
} else {
currentTitle++;
}
$('.NewsRotator li').eq(currentTitle).fadeIn(900);
} else {
return false;
}
}, 3000);
}
};
}());
$(document).ready(function(){
NewsRotator.init();
});
此外 - 我认为您可以通过缓存“li”选择器来略微提高性能。
答案 1 :(得分:1)
有两种方法可以实现这一目标:
true
。答案 2 :(得分:0)
看看这个JQFAQ.com,这是暂停和恢复计时器的答案。这里有更多常见问题解答,希望这可以帮助您获得更多想法