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

Mais de um evento com jQuery

Olá instrutores, tudo bem? Estudamos no capítulo de eventos com jQuery, que podemos utilizar a função $(seletor).on(evento, handler) para associarmos um evento a uma função desejada. Mas, caso eu queira passar mais de um evento de uma vez? Como poderia fazer isso? Abraços. Agradeço.

5 respostas

Oi Guido!

Para passar mais de um evento, você pode passar eles separados por espaço no on, por exemplo:

$(seletor).on('blur click change', function() {
    console.log('evento aconteceu!');
}

ou, você poderia colocar a função em uma variável e passar ela como parâmetro pros diversos eventos que vc precisar:

var minhaFuncao = function() {
    console.log('evento aconteceu!');
}

$(seletor).click(minhaFuncao)
        .change(minhaFuncao)
        .blur(minhaFuncao);

abraços!

Guido, boa tarde.

Blz?

Segundo a documentação do jQuery podemos passar vários eventos separados por espaço dentro do argumento evento.

Exemplo:

$("seletor").on('mouseover mouseout click',  handler)

Texto original da documentação

events

Type: String

One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".

Link: http://api.jquery.com/on/

[]s

Muito bom, vocês me ajudaram bastante. Tenho mais uma dúvida: Caso eu passe mais de um evento na função .on, como poderia fazer para dentro de um if, saber qual foi o evento que foi disparado? Por exemplo: $(seletor).on("evento1 evento2 evento3", function(event) { if (event.eventoQueAconteceu == "click") { // faça alguma coisa } else if (event.eventoQueAconteceu == "change") { // faça outra coisa. } }); Em outras palavras, gostaria de descobrir a ação que foi disparada pelo usuário como evento. Agradeço a todos. Abraços.

solução!

A função executada pelo evento recebe um parâmetro "event", esse parâmetro é um objeto que contém a propriedade "type".

Essa propriedade trás o nome do evento que foi acionado, por exemplo:

$('#myDiv').off('click mouseover').on('click mouseover', 'input[type=button]', function(evt) {alert(evt.type); })

No código acima é atribuído o evento de clique e mouseover a um botão que está dentro de uma div, quando for acionado o evento de mouseover sera exibido um alert com o valor "mouseover" e quando clicado no botão será exibo um alert com o valor "click".

Espero ter ajudado.

Abraços!

Agradeço a todos que me auxiliaram.

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