0

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

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

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

4

2 回答 2

3

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

function timeoutFunc() {
  $(this).addClass("appeared");
}

function goFadeNow(){
  var loopdelay=250;

  $(".feedcontain").each(function() {
    setTimeout(timeoutFunc.bind(this), loopdelay);
    loopdelay=loopdelay+250;
  });
}
于 2013-06-16T05:11:12.407 回答
2
function goFadeNow(){
    var loopdelay=250;
    $(".feedcontain").each(function() {
        var $this = $(this);
        setTimeout(function () {
            $this.addClass("appeared");
        }, loopdelay);
        loopdelay=loopdelay+250;
    });
}
于 2013-06-16T05:01:10.607 回答