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
,只需重新绑定它就可以执行不同的上下文。