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

atalho click + function com parâmetro

Verifiquei que na maioria dos casos estamos utilizando atalhos para simplificar o evento de click, tenho a seguinte dúvida:

$("#botao-altera-frase").click(fraseAleatoria);

function fraseAleatoria() {
    console.log("Olá");
}

Nesse caso devemos passar a função como parâmetro pro click, mas sem os parênteses, pois com parênteses a função é executada automaicamente.

Como ficaria caso a função tivesse parâmetros? Existe alguma forma mantendo o "click" ao inves de usar o "on('click')" ? Se eu passar os parâmetros direto, a função é executada automaticamente, independente de eu ter clicado no botão !

$("#botao-altera-frase").click(fraseAleatoria("um", "dois"));

function fraseAleatoria(teste1, teste2) {
    console.log("Olá " + teste1 + " " + teste2);
}
2 respostas
solução!

Existem algumas estratégias, uma simples é a seguinte:

$("#botao-altera-frase").click(function(event) {
    fraseAleatoria("um", "dois");
});
... resto não muda nada

É que a função de clique vai receber como argumento o "event" representando o event. Até existem outras técnicas para chamar direto a frase aleatoria, mas aí perderia o event, o que não é bom. Essa forma usarmos a possibilidade de atuar com escopo e função anonimas para fazer o que você precisa.

Como não pensei nisso !

Obrigado !