我有一份退货声明,我的情况肯定得到满足。但功能仍在运行,不确定原因。
<script>
var loop = true;
fade();
// rotate navigation banners
function fade(){
var divs = jQuery('.site-wide-notification');
var current = jQuery('.first-notification');
var currentIndex = divs.index(current),
nextIndex = currentIndex + 1;
if (nextIndex >= divs.length){
nextIndex = 0;
}
var next = divs.eq(nextIndex);
next.stop().fadeIn(2000, function(){
jQuery(this).addClass('first-notification');
setTimeout(fade, 3000);
});
current.stop().fadeOut(2000, function(){
jQuery(this).removeClass('first-notification');
});
jQuery('.site-wide-notification').click(function(){
console.log('Closed');
jQuery('.site-wide-notification').css('display', 'none');
loop = false;
});
if (!loop){
console.log('stop da loop');
return false;
}
}
此代码用于旋转顶部的一些横幅,淡入淡出,当用户点击其中任何一个时,它会将它们全部设置为display: none
。当用户点击其中任何一个时,显示console.log('Closed')
并且循环设置为false
,然后输入if !loop
语句并且控制台打印stop da loop,但淡入淡出功能继续运行尽管它回归了。
答案 0 :(得分:1)
您的函数是返回false
(在!loop
情况下)还是undefined
(否则)无关紧要。当您拨打fade()
时,它会设置一个计时器以再次呼叫fade()
。无条件。
将if (!loop) return;
测试移至功能顶部。这样,如果循环不应继续,则在设置下一次迭代之前函数将退出。