gpt4 book ai didi

javascript - 离开页面几分钟后 jQuery 多个幻灯片效果错误

转载 作者:行者123 更新时间:2023-11-29 15:49:42 25 4
gpt4 key购买 nike

我的自定义 slider 脚本存在错误。当我在页面上时,一切都很顺利,但是当我打开另一个选项卡并浏览一分钟左右,而不是回到我的页面时,我的脚本变得疯狂......脚本非常简单。

Here is Jsfiddle - slider 中没有图像,这就是为什么它看起来不像它应该的那样漂亮..

function show12(evt){
$('#number_1').unbind();
$('#number_2').unbind();
// First slide
$('#number_1').css({
position: 'absolute',
top: '9px',
left: '10px',
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

$('#slide_1').css({
position: 'absolute',
top: '9px',
left: '47px',
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

// Second slide
$('#number_2').css({
position: 'absolute',
top: '9px',
left: '445px',
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

$('#slide_2').css({
position: 'absolute',
top: '9px',
left: '481px',
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

// Third slide
$('#number_3').css({
position: 'absolute',
top: '9px',
left: '879px'
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

$('#slide_3').css({
display: 'none'
});

// Forth slide
$('#number_4').css({
position: 'absolute',
top: '9px',
left: '917px'
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

$('#slide_4').css({
display: 'none'
});

$('#number_1, #number_2').hover(
function(){window.clearInterval(timer); i=1;}
);

$('#number_1, #number_2').mouseout(
function(){
$(this).unbind();
timer = window.setInterval(function(){slideLogos();}, 4000); i=1;
}
);


$('#number_3').hover(function(){$(this).unbind(); i++; show34();});
$('#number_4').hover(function(){$(this).unbind(); i++; show34();});

}

function show34(){
$('#number_3').unbind();
$('#number_4').unbind();

// First slide
$('#number_1').css({
position: 'absolute',
top: '9px',
left: '10px',
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

$('#slide_1').css({
display: 'none'
});

// Second slide
$('#number_2').css({
position: 'absolute',
top: '9px',
left: '48px',
}).effect('slide', {
direction: 'left',
mode: 'show'
}, 'slow');

$('#slide_2').css({
display: 'none'
});

// Third slide
$('#number_3').css({
position: 'absolute',
top: '9px',
left: '86px'
}).effect('slide', {
direction: 'right',
mode: 'show'
}, 'slow');

$('#slide_3').css({
display: 'inline-block',
position: 'absolute',
top: '9px',
left: '123px',
}).effect('slide', {
direction: 'right',
mode: 'show'
}, 'slow');

// Forth slide
$('#number_4').css({
position: 'absolute',
top: '9px',
left: '521px'
}).effect('slide', {
direction: 'right',
mode: 'show'
}, 'slow');

$('#slide_4').css({
position: 'absolute',
top: '9px',
left: '558px',
}).effect('slide', {
direction: 'right',
mode: 'show'
}, 'slow');

$('#number_3, #number_4').hover(
function(){window.clearInterval(timer); i=0;}
);

$('#number_3, #number_4').mouseout(
function(){
$(this).unbind();
timer = window.setInterval(function(){slideLogos();}, 4000); i=0;
}
);

$('#number_1').hover(function(){$(this).unbind(); i++; show12();});
$('#number_2').hover(function(){$(this).unbind(); i++; show12();});
}

function slideLogos(){


switch(i%2){
case 0:
show12();
break;
case 1:
show34();
break;
}
i++;
}

var i = 1;
var timer;

$('document').ready(function(){

show12();

timer = setInterval(function(){slideLogos();}, 4000);

});

Number_n - 是始终显示在 slider 中的数字,Slide_n - 是显示/隐藏的幻灯片,抱歉 :)

最佳答案

由于 requestAnimationFrame() 的性质,您不应该使用 setInterval 或 setTimeout 循环对动画进行排队。

文档建议在元素上使用动画回调或 jQuery .queue() 函数。

jQuery Queue()

关于队列的这个答案也很有趣: What are queues in jQuery?

关于javascript - 离开页面几分钟后 jQuery 多个幻灯片效果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com