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

Sobre a escrita em jQuery

Olá sobre a escrita do código em jQuery gostaria de confirmar se é como escrevi abaixo ou se deve ser de outra forma, fiz a aula de jQuery pouco antes dessa e gostaria apenas de sanar essa dúvida para melhorar.

Código da aula:

document.querySelector('.menu-abrir').onclick = function() {
    document.documentElement.classList.add('menu-ativo');
};

document.querySelector('.menu-fechar').onclick = function() {
    document.documentElement.classList.remove('menu-ativo');
};

Meu jQuery:

$(".menu-abrir").click = function() {
  classList.addClass("menu-ativo");  
};
$(".menu-fechar").click = function() {
  classList.removeClass("menu-ativo");  
};

Desde já agradeço a atenção :)

7 respostas

Se funcionar está ótimo! Eu não sabia que poderia ser escrito dessa forma (talvez por que eu ainda não tenha feito o curso de jQuery hahaha). Mas acho que eu escreveria assim:

$(".menu-abrir").on("click", function() {
     $(this).addClass("menu-ativo");  
});
$(".menu-fechar").on("click", function() {
    $(this).removeClass("menu-ativo");  
});

Mas já que estamos só adicionando e removendo uma classe, podemos fazer também (se tivessemos apenas uma classe para o botão):

$(".menu-acao").on("click", function() {
     $(this).toggleClass("menu-ativo");  
});

E reduzir ainda mais:

$(".menu-acao").click(function() {
     $(this).toggleClass("menu-ativo");  
});

Nossa tinha esquecido do toggleClass, muito bom, valeu pelo retorno, ainda estou aprendendo é sempre bom ver mais opções :). Sobre o meu código ainda não testei :p, estava curioso mesmo para saber como escrever.

solução!

Rafael, no jquery pra adicionar o evento precisa fazer a chamada do on como o Wanderson mostrou. Do jeito que vc fez .click = não funciona.

Só um detalhe a mais: no codigo original adicionamos a classe no document.documentElement. Esse cara é o <html> entao precisa fazer:

$('html').toggleClass("menu-ativo");

E daria pra fazer essa ideia do toggle adicionando eventos nos elementos de uma vez (sem criar a classe acao que o Wanderson sugeriu):

$(".menu-abrir, .menu-fechar").click(function() {
     $('html').toggleClass("menu-ativo");  
});

Nossa, muito bom, obrigado pelo esclarecimento Sérgio :)

Outra dúvida que reparei agora, rs, nesse exemplo que mandou não teria o ".on" também não?

$(".menu-abrir, .menu-fechar").on("click", function() {
     $("html").toggleClass("menu-ativo"));  
});

Ambas funcionam na verdade. click() é um atalho pra on('click'): https://api.jquery.com/click/

Muito bom mesmo, vlw pela resposta Sérgio, e parabéns pelo curso também, está me ajudando e muito.

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