几秒后淡出并删除元素

lau*_*kok 16 jquery fadeout

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

例如,

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


alert($('.background-blackout').length);
// return 1
Run Code Online (Sandbox Code Playgroud)

这没有回调,

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

}).remove();

alert($('.background-blackout').length);
// return 0.
Run Code Online (Sandbox Code Playgroud)

但它在元素完全淡出之前删除了元素.所以我想我应该remove()在几秒后打电话给你?

那我怎么能这样做remove()呢?

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

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


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


alert($('.background-blackout').length);
// returns 1.
Run Code Online (Sandbox Code Playgroud)

Pie*_*rre 37

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

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