Jquery 永远重复一个函数
通过以下步骤,我调用一个函数。函数等待,然后淡出图像,等待,然后淡入Jquery 永远重复一个函数,jquery,Jquery,通过以下步骤,我调用一个函数。函数等待,然后淡出图像,等待,然后淡入 function fadeOut() { $('img.my-image').delay(5000).fadeOut(500, function() { $('img.my-image').delay(5000).fadeIn(500); }); } fadeOut(); 如何使此函数永远重复?我可以在淡出函数的结束}之前放一行代码,让它从头开始吗 更新-这是我的Drupal站点。似乎代码应该可以工作 这是我
function fadeOut() {
$('img.my-image').delay(5000).fadeOut(500, function() {
$('img.my-image').delay(5000).fadeIn(500);
});
}
fadeOut();
如何使此函数永远重复?我可以在淡出函数的结束}之前放一行代码,让它从头开始吗
更新-这是我的Drupal站点。似乎代码应该可以工作
这是我的确切密码:
$(document).ready(function() {
if ( $(window).width() > 960) {
function fadeOutFunc() {
$('.image-list .bottom').delay(1000).fadeOut(500, function() {
$('.image-list .bottom').delay(1000).fadeIn(500,fadeOutFunc);
});
}
fadeOutFunc();
// jQuery('.image-list .bottom').css('opacity','0.6');
}
});
是的,只要告诉它在
fadeIn
结束时调用自己即可。幸运的是,jQuery内置了对这一点的支持,您已经使用它在淡入淡出后淡入:
function fadeOut() {
$('img.my-image').delay(5000).fadeOut(500, function() {
$('img.my-image').delay(5000).fadeIn(500,fadeOut); // <-- see the tiny change?
});
}
fadeOut();
如果是我,我会使用setInterval:
setInterval(function fadeOut() {
$('img.my-image').delay(5000).fadeOut(500, function() {
$('img.my-image').delay(5000).fadeIn(500);
});
}, 1000);
这将每1秒加载一次函数,因为1000毫秒是1秒。它不会停止
编辑:您可以在任何时间内完成工作。只需使用它们作为秒数*1000作为2*1000或2000,持续2秒
这不是Jan Dovark的问题,您可以尝试使用以下代码:
$(window).focus(function() {
因此,当窗口选项卡处于焦点时,setInterval可以工作 可能会使用
setInterval
@Blender,为什么?每次同步块完成时,堆栈都会展开-剩下的是一堆挂起的超时。@Blender你确定吗?这没有嵌套的作用域,所以它不应该…jQuery的回调必须是低级别的事件驱动,所以这应该没问题。@JanDvorak:是的,它在900次迭代中就消失了。尝试删除.delay()
调用,并将动画速度设置为0
@Blender,这样您就已经从循环中完全删除了事件,因此在这种情况下,它将消失(jQuery将采用快捷方式并在同一范围内执行回调)有没有理由不使用setInterval?它似乎正是它的用途。这可能是更整洁的解决方案,但你需要使用11000而不是1000的间隔。出于类似的原因,它可能更难维持。不知道你为什么会被否决。如果一切顺利,你排队的动画需要11秒,所以你不应该每一两秒排队一次。即使你每11秒让它排队一次,如果浏览器打嗝并花时间调用一个重要的超时,东西也会开始排队——可能没什么大问题,但仍然不干净。投票被否决,因为这是一个脆弱的解决方案。如果间隔比动画短,jQuery动画队列将开始增长。如果间隔较长,则可能很难调试暂停的原因。每次更改函数内的计时时,都必须将更改传播到间隔。很容易忘记。@Dave即使您正确设置了计时,如果出现延迟(它会),jQuery队列也会建立起来。想象一下把水倒进漏斗里。与漏斗最大值相比,吞吐量将减少,或者漏斗将溢出。更好的解决方案:每次漏斗空了时,向漏斗中倒入一些水-这样可以最大限度地提高吞吐量,漏斗不会溢出。使用此方法可以最大限度地减少问题。focus(function(){因此,该函数仅在窗口处于焦点时运行。
$(window).focus(function() {