Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比设置间隔更好的方法?_Javascript_Jquery - Fatal编程技术网

Javascript 比设置间隔更好的方法?

Javascript 比设置间隔更好的方法?,javascript,jquery,Javascript,Jquery,我有下面的当前函数,但感觉有更好的方法来编写相同的东西。我正在寻找一些关于编写下面相同函数的最优化方法的见解,以及原因 注意这都在$(function(){})的内部 看起来,根据您正在做的事情,您希望随时间切换元素的运动。您只需将原始函数m()设置为在第二个内部动画完成时执行的回调。您可以临时在第一个动画回调中使用此,而不是再次找到它。除此之外,我认为这里没有任何进一步的改进 m = function(){ $("#id").animate({marginRight : 0}, 'slow

我有下面的当前函数,但感觉有更好的方法来编写相同的东西。我正在寻找一些关于编写下面相同函数的最优化方法的见解,以及原因

注意这都在
$(function(){})的内部


看起来,根据您正在做的事情,您希望随时间切换元素的运动。您只需将原始函数
m()
设置为在第二个内部动画完成时执行的回调。

您可以临时在第一个动画回调中使用
,而不是再次找到它。除此之外,我认为这里没有任何进一步的改进

m = function(){
  $("#id").animate({marginRight : 0}, 'slow', function(){
       $(this).animate({marginRight : "15px"}, 'slow');
     })
} 
 setInterval(m, 700); 
编辑:


它使用setTimeout,但是,setTimeout是比setInterval更好的解决方案,因为它只会在前一个解决方案完成时将新的解决方案排队。这将有助于防止jquery 1.6目前使用的RAF出现问题。

这是如何实现700ms延迟的?似乎在动画完成后,它首先被用来激活切换。这个数字并不重要,除非我误解了这个数字code@Maz你是对的,这个数字真的不重要,我只想在函数完成后再次调用它。而且-这正是我想要的for@jnolte-很好你找到了你需要的东西,但实际上,如果延迟的时间无关紧要,那么最好在问题中这样说。。。
m = function(){
  $("#id").animate({marginRight : 0}, 'slow', function(){
       $("#id").animate({marginRight : "15px"}, 'slow',m);
     });
} 
m();
m = function(){
  $("#id").animate({marginRight : 0}, 'slow', function(){
       $(this).animate({marginRight : "15px"}, 'slow');
     })
} 
 setInterval(m, 700); 
(function m(){
    $("#id").animate({marginRight : 0}, 'slow', function(){
        $(this).animate({marginRight : "15px"}, 'slow',function(){
            setTimeout(m,700);
        });
     });
})();