一連の div を反復し、ループし、次の 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);
}
});
});
もちろん、いつものように、私はおそらくとても単純なことを考えすぎています.