我创建了一个函数,它遍历一组 div、循环、淡入和淡出下一个。
我想要做的是在“点击”、if/else 或焦点时停止它。在进行一些搜索时,我似乎可以利用setTimeout
-clearTimeout
功能。但是我有点不清楚如何去做,也许实施不正确。
HTML:
<a href="#" class="killFunc">Kill Loop Function</a>
<div id="productBox">
<h3>Dynamic Title Here</h3>
<div class="divProduct">
<!-- product image -->
<div class="product-discription">
<h4>Product 1</h4>
<p>Cras justo odio, dapibus ac facilisis in.</p>
<a href="#">Learn More</a>
</div>
</div>
<!-- Repeat '.divProduct' over and over -->
</div>
JS:
timer = null;
function productTypeCycle(element) {
timer = setTimeout(function() {
element.fadeIn()
.delay(1000)
.fadeOut(function() {
if(element.next().length > 0) {
productTypeCycle(element.next());
}
else {
productTypeCycle(element.siblings(":nth-child(2)"));
}
});
}, 500);
}
$(document).ready(function() {
productTypeCycle($(".divProduct:first"));
$(".killFunc").click(function(e) {
e.preventDefault();
if(timer !== null) {
clearTimeout(timer);
}
});
});
当然,像往常一样,我可能想得太简单了。