我怎么会有'this'setTimeout参数中的关键字

How would I have the 'this' keyword in a setTimeout parameter?

本文关键字:关键字 参数 setTimeout 怎么会 this      更新时间:2023-09-26

我有以下代码,目的是使每个.feedcontaindiv在增加延迟后逐渐淡入。动画和格式是完美的,只是我不能在第一个setTimeout()参数中使用this关键字。

function goFadeNow(){
    var loopdelay=250;
    $(".feedcontain").each(function() {
        setTimeout('$('+this+').addClass("appeared");',loopdelay);
        //$(this).addClass("appeared");
        loopdelay=loopdelay+250;
    });
}

如果我取消注释第5行和注释第4行,它可以工作,但它没有延迟。PS:我确实意识到我不能像使用正常变量一样使用this

您也可以将传递给this指针的函数bind():

function timeoutFunc() {
  $(this).addClass("appeared");
}
function goFadeNow(){
  var loopdelay=250;
  $(".feedcontain").each(function() {
    setTimeout(timeoutFunc.bind(this), loopdelay);
    loopdelay=loopdelay+250;
  });
}
function goFadeNow(){
    var loopdelay=250;
    $(".feedcontain").each(function() {
        var $this = $(this);
        setTimeout(function () {
            $this.addClass("appeared");
        }, loopdelay);
        loopdelay=loopdelay+250;
    });
}