这是我的代码:
function transition(index){
$("#right-panel").find("img").each(function(){
if ($(this).index() === index){
setTimeout(function(){
$(this).fadeIn(750);
}, 100000000);
}else{
$(this).fadeOut(750);
}
});
}
由于某种原因,函数中的setTimeout不会导致fadeIn延迟。我做错了什么?
答案 0 :(得分:6)
this
回调中的 setTimeout
与其外部不同。
var self = this;
setTimeout(function(){
$(self).fadeIn(750);
}, 100000000);
虽然您可以使用.delay()
。
$(this).delay(100000000).fadeIn(750)
总体而言,更好的方法似乎是使用.eq()
来抓取您想要的.fadeIn()
,以及.fadeOut()
其余的。
function transition(index){
var images = $("#right-panel").find("img");// get all the images
var fadein = images.eq(index)
.delay(100000000)
.fadeIn(750); // fadeIn the one at "index"
images.not(fadein).fadeOut(750); // fadeOut all the others
}
答案 1 :(得分:0)
为什么你需要setTimeout?
function transition(index){
$("#right-panel").find("img").each(function(){
if ($(this).index() === index){ // did you check this statement?
$(this).delay(100000000).fadeIn(750);
}else{
$(this).fadeOut(750);
}
});
}