jQuery.each中的setTimeout不起作用

时间:2016-04-10 03:50:33

标签: javascript jquery animation settimeout

我想模仿this site

的菜单项动画

这是我为制作动画所写的关键代码:

NSArray

但它不起作用,在这个fiddle中,4个项目被翻译在一起,而不是#34;超时"一点都没奇怪的是,在我的实际网站中,代码似乎更加破碎,根本没有添加类。我检查了我网站的代码并再次弄乱,但我无法找到问题所在。

2 个答案:

答案 0 :(得分:3)

您可以使用.each方法中的第二个参数来确定元素。像:

$('.inOrder').click(function(){
  $('ul li').each(function(i, ele){
    setTimeout(function(){
      $(ele).addClass('animated');
    },400*i);
  })
})

https://jsfiddle.net/2pgf76vx/2/

答案 1 :(得分:1)

您必须使用this单独定位每个元素,

  $('ul li').each(function(i){
    setTimeout(function(){
      $(this).addClass('animated');
    }.bind(this),400*i)
  });

DEMO

或者您可以使用箭头功能来解决此问题,

  $('ul li').each(function(i){
    setTimeout(()=>{
      $(this).addClass('animated');
    },400*i)
  });