簡體   English   中英

jQuery.setTimeout.each不起作用

[英]setTimeout in jQuery.each not working

我想模仿這個網站的菜單項動畫

這是我制作動畫的關鍵代碼:

li{transition:transform 600ms}
li.animated{transform:translateY(20px)}

/* Javascript */
  $('nav ul li').each(function(i){
    setTimeout(function(){
      $('ul li').addClass('animated');
    },400*i)
  })

但這是行不通的,在這個小提琴中 ,這四個項目正在一起翻譯,根本沒有“超時”; 奇怪的是,在我的實際站點中,代碼似乎更加混亂,根本沒有添加任何類。 我檢查了我的網站的代碼,然后再次撥弄,但我找不到問題所在。

您可以使用.each方法中的第二個參數來確定元素。 喜歡:

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

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

您必須使用this來分別定位每個元素,

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

演示

或者您可以使用箭頭功能來解決此問題,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM