затемнение и удаление элемента через несколько секунд - PullRequest
16 голосов
/ 04 декабря 2011

Почему элемент не может быть удален при обратном вызове $.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 Ответ

36 голосов
/ 04 декабря 2011

Вы поняли это почти правильно, однако вам нужно проверить существование элемента внутри обратного вызова, как показано ниже:

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