Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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 我如何拥有';这';setTimeout参数中的关键字?_Javascript_Jquery_This - Fatal编程技术网

Javascript 我如何拥有';这';setTimeout参数中的关键字?

Javascript 我如何拥有';这';setTimeout参数中的关键字?,javascript,jquery,this,Javascript,Jquery,This,我有以下代码,目的是使每个.feedcontaindiv在延迟增加后淡入。动画和格式都很完美,只是在第一个setTimeout()参数中不能有this关键字 function goFadeNow(){ var loopdelay=250; $(".feedcontain").each(function() { setTimeout('$('+this+').addClass("appeared");',loopdelay); //$(this).a

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

function goFadeNow(){
    var loopdelay=250;
    $(".feedcontain").each(function() {
        setTimeout('$('+this+').addClass("appeared");',loopdelay);
        //$(this).addClass("appeared");
        loopdelay=loopdelay+250;
    });
}
如果我取消注释第5行和注释第4行,它可以工作,但没有延迟。PS:我确实意识到我不能像普通变量一样使用
这个

你也可以
bind()
传递给
这个
指针的函数:

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

function goFadeNow(){
  var loopdelay=250;

  $(".feedcontain").each(function() {
    setTimeout(timeoutFunc.bind(this), loopdelay);
    loopdelay=loopdelay+250;
  });
}
您还可以
bind()
传递给
这个
指针的函数:

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

function goFadeNow(){
  var loopdelay=250;

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

为什么你们都回答并结束了投票?@BenjaminGruenbaum感谢你们澄清这个解决方案不太正确:你们总是在同一个
$this
元素中添加class
。但是@ScorpionByte可能想将这个css类添加到jQuery选择器返回的每个元素中。要做到这一点,您应该在调用
setTimeout
@AlexArgutin之前将
$(此)
内部函数保存到
中,然后再调用
setTimeout
。@AlexArgutin哎哟,您完全正确!我累的时候不应该回答。很抱歉修正了。为什么你们都回答并结束投票?@BenjaminGruenbaum感谢你们澄清这个解决方案不太正确:你们总是在同一个
$this
元素中添加类
。但是@ScorpionByte可能想将这个css类添加到jQuery选择器返回的每个元素中。要做到这一点,您应该在调用
setTimeout
@AlexArgutin之前将
$(此)
内部函数保存到
中,然后再调用
setTimeout
。@AlexArgutin哎哟,您完全正确!我累的时候不应该回答。很抱歉修正。如果有,你认为这比Matt的答案有什么好处?为什么?Matt的解决方案保存了
goFadeNow
函数的上下文,但问题的作者要求传递每个
函数的上下文。想法是一样的,但我们可以在
timeoutFunc
中使用不同含义的
this
,只需重新绑定它就可以执行不同的上下文。您认为这比Matt的答案有什么好处?为什么?Matt的解决方案保存了
goFadeNow
函数的上下文,但是问题的作者要求传递每个函数的上下文。想法是一样的,但是我们可以在
timeoutFunc
中使用不同含义的
this
,只需重新绑定它就可以执行不同的上下文。