所以我似乎遇到了一點死衚衕。我正在製作一個具有圖像滑塊的頁面。滑塊有三個圖像,一個在屏幕上居中,另外兩個在左側和右側溢出。當你點擊按鈕進入運行這段代碼的幻燈片....循環與觸發器(其中包含動畫)不起作用
$('#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