SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
15.02.2025

Manipulando eventos onclick no jQuery sem $().click e $().live

Resumo Rápido

Para referenciar diretamente o elemento que foi clicado, use o termo coletivo this no contexto do manipulador onclick:

<button onclick="alert(this.tagName)">Clique Me</button>

Neste caso, this refere-se ao elemento <button>, e exibe o nome da sua tag quando clicado.

Compreendendo event.target e this

No JavaScript, ao lidar com eventos, dois termos-chave—this e event.target—desempenham um papel central. this refere-se condicionalmente ao elemento ao qual o evento está anexado, enquanto event.target refere-se ao elemento que ativou o evento. Essas duas entidades podem diferir durante a propagação de eventos a partir de um elemento interno.

Manipuladores de Eventos Inline vs. JavaScript Não Intrusivo: Uma Comparação

Inserir JavaScript diretamente no HTML diminui a manutenibilidade do código. Uma abordagem mais moderna é usar JavaScript não intrusivo, onde os eventos são adicionados através de addEventListener ou attachEvent, usado em versões mais antigas do Internet Explorer, promovendo uma separação entre estrutura e comportamento.

Problemas de Compatibilidade Entre Navegadores

Garantir compatibilidade com diferentes navegadores requer técnicas especiais:

element.onclick = function(e) {
    e = e || window.event; // para navegadores mais antigos
    var target = e.target || e.srcElement; // para Internet Explorer
    // Tratamento especial para o Internet Explorer.
};

Como resultado, o código fornecido funcionará corretamente mesmo no Internet Explorer.

Vazamentos de Memória: Os Assassinos Invisíveis

Esteja atento a vazamentos de memória, especialmente ao trabalhar com versões mais antigas de navegadores. Desative periodicamente os manipuladores de eventos para liberar recursos do sistema.

Gerenciando Várias Funções de Carregamento

Para lidar com múltiplos manipuladores de carregamento, use addEventListener, garantindo alta performance e evitando conflitos no escopo global.

Aproveitando ao Máximo o jQuery

jQuery simplifica o trabalho com eventos através do método .on() e facilita a manipulação do DOM. Você ganha flexibilidade única ao usar o jQuery.

Plano de Ação para JavaScript Não Intrusivo

Para aplicar corretamente o JavaScript não intrusivo:

  1. Manipule eventos dentro de scripts, deixando o código HTML intacto.
  2. Use addEventListener ou $.on() para vinculação de eventos.
  3. Evite a inserção direta de JavaScript no HTML.

Visualização

Considere um exemplo com dois botões (🌻 - Botão A, 🌼 - Botão B):

<button onclick="identificarChamador(this)">🌻</button>
<button onclick="identificarChamador(this)">🌼</button>

Quando clicados:

function identificarChamador(chamador) {
    alert(`Você clicou em ${chamador.innerText}!`);
}

Como resultado, temos:

Clique em 🌻: "Você clicou em 🌻!"
Clique em 🌼: "Você clicou em 🌼!"

Ambos os botões são únicos e passam seu contexto através do onclick. 🌼🌻

Seu Guia para Aventuras Empolgantes com onclick

Superando Desafios com Delegação de Eventos

A delegação de eventos é uma técnica eficaz para anexar um único manipulador de eventos a um elemento pai que será acionado para todos os elementos filhos. Isso simplifica o código e economiza recursos do sistema.

document.getElementById('container').addEventListener('click', function(e) {
    var elementoClicado = e.target;
    if (elementoClicado.tagName === 'BUTTON') {
        // Nessa situação, usar delegação simplifica a manipulação de eventos.
    }
});

Parâmetros Adicionais em Manipuladores de Eventos

Para passar parâmetros para manipuladores de eventos, utilize funções anônimas ou a função bind():

// Função anônima
button.onclick = function() {
    manipulador(arg1, arg2);
};

// Função bind
button.onclick = manipulador.bind(null, arg1, arg2);

Recursos Úteis

  1. Elemento: evento click - Web APIs | MDN
  2. Método click() do Elemento HTML DOM
  3. Manipulador de eventos JavaScript com parâmetros - Stack Overflow
  4. Evento: propriedade currentTarget - Web APIs | MDN
  5. Propagação e captura
  6. JavaScript - Ordem dos eventos

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!