我有一组绝对定位的 div,它们是图像的容器。每个 div 都有一个 class ,photoCover
每个 img 有一个 class fbPhoto
。我已经设置了一个循环函数,它在页面加载时会淡出集合中的每个图像,从而显示下面的图像然后循环。
当用户单击其中任何一个时,我需要能够阻止这种情况。
我已经尝试了各种涉及$(this).stop(true, true)
SO 的选项和几个示例,但似乎没有任何效果。
这是循环函数的代码
var thumbNailTimeOut;
function loopSmallSlides(eleArray) {
var slideCount = eleArray.length;
$(eleArray).each(function (indexInArray) {
var ele = this;
thumbNailTimeOut = setTimeout(function () {
if (indexInArray == slideCount - 1) {
$(eleArray).fadeIn('slow').on("click", function () {
clearTimeout(thumbNailTimeOut);
});
clearTimeout(thumbNailTimeOut);
loopSmallSlides(eleArray); // loop the function when the end is reached
} else {
$(ele).fadeToggle('slow').on("click", function () {
clearTimeout(thumbNailTimeOut);
});
};
}, (indexInArray + 1) * 1000);
});
};
循环函数接受以下生成的元素数组document.ready
:
$(document).ready(function () {
$('.photoCover').each(function () {
// get an array of elements to slide
var eleArray = $(this).children('.fbPhoto').get().reverse();
loopSmallSlides(eleArray);
});
});
片段
$(ele).fadeToggle('slow').on("click", function () {
clearTimeout(thumbNailTimeOut);
});
正在尝试为数组中的每个元素添加一个单击处理程序,以便在单击任何这些元素时清除超时,但它不起作用。如您所见,该变量thumbNailTimeOut
是全局可用的变量...据我所知,这应该可以取消timeOut
吗?
如前所述,我尝试使用stop
但无法到达任何地方,我尝试将 a 添加click
到父元素,然后循环遍历子元素,删除任何动画,如下所示,但这不起作用。
$('.photoCover').each(function () {
$(this).children('.fbPhoto').stop(true, true);
});
如果需要,HTML 如下所示:
<style>
.photoCover{display:inline-block;width:204px;height:194px;vertical-align:top;}
.fbPhoto{position:absolute;display:inline-block;width:110px;height:110px;margin:4px;background-position:center center;background-repeat:no-repeat;border-radius:5px;border:16px groove #93BABA;background-color:#93BABA;}
</style>
<div class="photoCover">
<h4>Album Title</h4>
<span style="background-image: url('IMG URL');" class="fbPhoto"></span>
<span style="background-image: url(IMG URL); " class="fbPhoto"></span>
<span style="background-image: url(IMG URL); " class="fbPhoto"></span>
<span style="background-image: url(IMG URL); " class="fbPhoto"></span>
<span style="background-image: url(IMG URL); " class="fbPhoto"></span>
</div>
所以我的问题是,在嵌套在父元素中的每组图像上设置了这个循环后.photoCover
,如何通过单击暂停该动画然后重新启动?
非常感谢任何帮助!SO上似乎还有很多其他问题,但我无法为这个例子找到答案!