setTimeout没有添加延迟

时间:2012-01-27 22:15:32

标签: javascript jquery debugging settimeout

这是我的代码:

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延迟。我做错了什么?

2 个答案:

答案 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);
        }
    });
}