我似乎遇到了一点困难。我正在制作一个带有图像滑块的页面。滑块有三个图像,一个位于屏幕中央,另外两个溢出到左右两侧。当你点击按钮以推进幻灯片时,它会运行以下代码...
$('#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')每次都会被触发,而slideRight事件的其余部分则不会被执行...
所以我的第一个问题是,有人能解释为什么第一次不运行吗?
我的第二个问题是,有没有办法在动画完成之前等待并继续循环?
任何帮助将不胜感激。谢谢!
galsize()
是什么? - Birrel