当您单击下一个或上一个时,您应该停止间隔和上一个动画,即:
clearInterval(run);
$('#slideshow img').stop();
当下一张图像的淡入完成后,您重新开始间隔,即:
$('#slideshow img:last').fadeIn(1000, function() { run=setInterval("switchSlide()", speed);})
编辑:
如果您在一秒钟内单击开关按钮 10 次。大约 20 个动画将同时运行。
编辑:
如果您在图像切换(自动或以其他方式)时单击下一个或上一个,并且淡化已经在进行中,则淡化将在整个效果的时间跨度(即 1 秒)内从几乎淡化到完全淡化。在这段时间里,图像大部分是白色的。
在手动切换时设置淡出可能会更好(比如 300 毫秒甚至更少)。这也将改善用户体验。
编辑:
这是fiddle
代码如下:
var speed = 4000;
run = setTimeout("switchSlide()", speed);
$(document).ready(function() {
$('#caption').html($('#slideshow img:last').attr('title'));
$('#previous').click(switchBack);
$('#next').click(switchSlide);
});
function switchSlide() {
clearInterval(run);
$('#slideshow img').stop(true,true);
var jq=$('#slideshow img');
jq.first().css({'opacity':0}).appendTo('#slideshow').animate({'opacity':1}, 1000, function() {
run = setTimeout("switchSlide()", speed); } );
$('#caption').html(jq.last().attr('title'));
}
function switchBack() {
clearInterval(run);
$('#slideshow img').stop(true,true);
var jq=$('#slideshow img');
jq.last().animate({'opacity':0},1000, function() {
$(this).prependTo('#slideshow').css({'opacity':1}); run = setTimeout("switchSlide()", speed);});
$('#caption').html(jq.get(1).title);
}