所以我似乎遇到了一点死胡同。我正在制作一个具有图像滑块的页面。滑块有三个图像,一个在屏幕上居中,另外两个在左侧和右侧溢出。当你点击按钮进入运行这段代码的幻灯片....循环与触发器(其中包含动画)不起作用
$('#slideRight').click(function() {
if ($('.container').is(':animated')) {return false;}
var next=parseInt($('.container img:last-of-type').attr('id')) + 1;
if (next == 12) {
next = 0;
}
var diff = galsize() - 700;
if ($('.thumbs').css("left") == "0px") {
var plus = 78;
} else {
var plus = 0;
}
var app='<img id="' + next + '" src="' + imgs[next].src + '">';
$('.container').width('2800px').append(app);
$('.container').animate({marginLeft: (diff + plus) + "px"}, 300, function() {
$('.container img:first-of-type').remove();
$('.container').width('2100px').css("margin-left", (galsize() + plus) + "px");
});
}); // end right click
这一切正常,没有问题.....我也有一个时间间隔设置为自动运行的每本5秒钟,形成一个幻灯片...
var slideShow = setInterval(function() {
$('#slideRight').trigger("click");
}, 5000);
这也完美的作品,而不是一个问题....但是我的问题是这样的....我有缩略图,当你点击一个缩略图,它应该运行此代码,直到当前图片与缩略图相同....这里是代码....
$('img.thumbnail').click(function() {
clearInterval(slideShow);
var src = $(this).attr("src");
while ($('.container img:eq(1)').attr('src') != src) {
$('#slideRight').trigger("click");
}
});
当我点击缩略图没有任何反应......我已经用警示语句尝试和调试,结束意外事件发生是这样的....
while循环执行,但是什么也没有发生第一次。幻灯片根本没有进展。从第二次执行开始,is(':: animated')被触发EVERY TIME并且slideRight事件的其余部分未被执行...
所以我的第一个问题,任何人都可以阐明为什么它不会第一次跑步?
而我的第二个问题是,还有什么方法可以等到动画完成后再继续循环吗?
任何帮助,将不胜感激。谢谢!
谢谢。这两个变量唯一的问题是,如果你点击箭头,什么都不会发生。它有三种不同的方式来访问照片,点击左/右箭头(例如#slideright按钮),幻灯片和缩略图。 – user3159369
我意识到,在最初的职位后,并做了一个小编辑。您不需要从setInterval中调用点击,而是要调用一个函数。在该函数中,您可以添加到$ timeSinceReset,并检查条件。如果条件通过,请执行点击。我会在帖子中编辑它。 – Birrel
我试着没有间隔地运行它。 ('。container')。animate({marginLeft:(diff + plus)+“px”},300,function(){('。container img :'('。');('。')。('。')。 }); – user3159369