2
respostas

Parâmetro event

Olá. Por que a função removeLinha não está recebendo o "event" como parâmetro?

function removeLinha(){
    event.preventDefault();
    $(this).parent().parent().remove();
}
2 respostas

Fala Dante, tudo bem? Espero que sim!

Acredito que não foi recebida por parâmetro por erro do instrutor que acredito que tenha esquecido de fazer isso! Porém o correto é receber por parâmetro sim, então ficaria:

function removeLinha(event){
    event.preventDefault();
    $(this).parent().parent().remove();
}

Espero ter ajudado, abraços e bons estudos :D

uma ideia...

criei um id para cada linha, ele é criado dinâmicamente juntamente com a linha, assim a função que remove dados vai atuar diretamente naquele id fiz isso pois além de ter problemas com o event, tive problemas com o $(this)

como foi feito:

criei uma variável global:

var countLinha = 0;

na hora de inserir dados no placar fiz um incremento sobre esse contador e passo o novo valor toda vez que criar uma linha nova aqui ele agora atualizado passa a se chamar numLinha, e é passado como parâmetro para criação de linha...

  • perceba que o preventDefault() ficou neste ponto...
  • perceba que monto o id da linha dinamicamente ao passar como parâmetro para removerDadosDoPlacar...

aqui veja:

removerDadosDoPlacar($("#linha-"+numlinha))

completo:

function insereDadosNoPlacar(usuario, qtdPalavras){
    var tabela = $(".placar").find("tbody")
    var numLinha = countLinha++
    var linha = criaLinha(usuario, qtdPalavras, numLinha)

    linha.find(".botao-remover").on("click",(event)=>{
        event.preventDefault()
        removerDadosDoPlacar($("#linha-"+numlinha))
    })
    tabela.prepend(linha)
}

agora ao criar a linha ela receberá um valor direferente e montará o id da linha com o attr().. veja:

var linha = $("<tr>").attr("id", "linha-"+numLinha)

completo:

function criaLinha(usuario, qtdPalavras, numLinha){

    var linha = $("<tr>").attr("id", "linha-"+numLinha)
    var colunaNome = $("<td>").text(usuario)
    var colunaQtdPalavras = $("<td>").text(qtdPalavras)
    var colunaRemove = $("<td>")
    var btnRemover = $("<a>").addClass("botao-remover").attr("href", "#")
    var icone = $("<i>").addClass("material-icons").text("delete_sweep")

    btnRemover.append(icone)
    colunaRemove.append(btnRemover)
    linha.append(colunaNome)
    linha.append(colunaQtdPalavras)
    linha.append(colunaRemove)

    return linha
}

ao realizar a ação de remover dados do placar eu apenas passo o id assim seleciono o id da linha direto e removo:

function removerDadosDoPlacar(id){   
        $(id).remove()
}

quanto a linha padrão: ela serve apenas para exemplificar, originalmente não deve existir ou deve vir de um db em caso real, ou algo assim, poranto se quiser manter ela com o evento atuado, basta atrelar o evento a ela e um id como 0, e o contador passa a iniciar a partir de 1 por exemplo, bom... uma ideia apenas... rs