几秒后淡出并删除元素

时间:2011-12-04 14:38:15

标签: jquery fadeout

为什么在$.fadeout的回调中无法删除元素?

例如,

$(".background-blackout").fadeOut('slow', function(){
    // Remove all the layer.
        $(this).remove();
}));


alert($('.background-blackout').length);
// return 1

这没有回调,

$(".background-blackout").fadeOut('slow', function(){

}).remove();

alert($('.background-blackout').length);
// return 0.

但它在元素完全淡出之前删除了元素。所以我想我应该在几秒钟之后拨打remove()

那我怎么能用remove()

来做到这一点

我试过这个,但不会删除图层,

$(".background-blackout").fadeOut('slow', function(){
});


setTimeout(function(){
    $(".background-blackout").remove(); 
},2000);


alert($('.background-blackout').length);
// returns 1.

1 个答案:

答案 0 :(得分:34)

你得到的几乎是正确的,但你需要在回调中测试元素的存在,如下所示:

$(".background-blackout").fadeOut('slow', function(){
  $(this).remove();
  // alert( $('.background-blackout').length );
  console.log( $('.background-blackout').length );
});