您嘗試的方法具有在用戶將鼠標移動到圖像上時排隊所有轉換的缺點,但您在離開時無法取消那些排隊的轉換。他們也只會循環一次(我猜你會希望它無限期地繼續下去)。多次觸發鼠標移動也會以奇怪的效果結束。
我想你應該使用的setInterval和CSS轉換來代替,而像這樣:http://codepen.io/xram/pen/JbLNNL
var gridItemSelector = '.grid-item',
slideImageSelector = gridItemSelector + ' .slide-image',
timerId,
visibleCssClass = 'visible';
$(gridItemSelector).on('mouseover', function() {
timerId = setInterval(transitionToNextImage, 2000);
}).on('mouseleave', function() {
clearInterval(timerId);
});
function transitionToNextImage() {
var $slideImages = $(slideImageSelector),
visibleImageIndex = $slideImages.index($(slideImageSelector).filter('.' + visibleCssClass));
$slideImages.removeClass(visibleCssClass);
if (visibleImageIndex < $slideImages.length - 1) {
$slideImages.eq(visibleImageIndex + 1).addClass(visibleCssClass);
} else {
$slideImages.eq(0).addClass(visibleCssClass);
}
}
我認爲這個問題是所有的幻燈片仍然可見一旦該功能已運行一次。如果他們沒有被隱藏,你必須在他們被顯示後再次隱藏幻燈片,然後他們不能被顯示。 – Sam
聽起來很合邏輯!你能編輯我的CodePen嗎? –