Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema setTimeout

Olá, estou com um problema no meu código que não consigo solucionar, o meu código está aplicando o fadeOut da forma correta, porém não está executando a função remove().

function removeJogador() {
    event.preventDefault();
    $(this).parent().parent().fadeOut(500);

    setTimeout(function() {
        $(this).parent().parent().remove();
    },500);
}

Ao substituir pelo do professor, o código funciona corretamente, testei só copiando para dentro do meu código.

function removeLinha() {
    event.preventDefault();
    var linha = $(this).parent().parent();

    linha.fadeOut(1000);
    setTimeout(function() {
        linha.remove();
    }, 1000);
}

Não consegui descobrir o erro, alguém poderia ajudar? Por algum motivo o setTimeout não remove o elemento, ele não executa....

2 respostas

Oi Mateus tudo bem?

Poderia, por gentileza, colocar a pasta do seu projeto no github. Assim podemos analisar melhor seu código.

solução!

Olá André, já consegui solucionar. O problema era que quando eu criava o setTimeout, aqui:

    setTimeout(function() {
        $(this).parent().parent().remove();
    },500);
}

eu passava o this novamente, porem, como ele tava dentro de uma nova função, ele estava se referindo ao escopo dela e não mais ao dono do evento, por isso não tava removendo.

A saída foi salvar o this numa variável antes de chamar o setTimeout, igual o professor fez em aula.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software