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

preventDefault

Olá boa tarde!

Eu criei um menu com 5 links onde no primeiro link tem uma classe active pra deixar o icone com a cor diferente dos demais, no javascript já criei a lógica para quando clicar em outro link ele remover a classe active atual e adiciona no link que foi clicado, só que para isso funcionar eu tive que usar o preventDefault() pois sempre que eu clicava em outro link, a página carregava e chamava a página referente ao link e não adionava a classe active no link clicado. Só que agora usando o preventDefault() não carrega as outras páginas...Como eu faço para manter ambos?

Please help me

6 respostas

Fala ai Rodolfo, tudo bem? Precisaria entender melhor quais páginas são essas e que tipo de aplicação você está fazendo.

São páginas estáticas feitas com HTML? São aplicações dinâmicas?

A maneira como fazer isso, vai depender de cada tipo de página e projeto.

Espero ter ajudado.

E ai Matheus, bem e vc?

Então Matheus estou montando uma página pessoal que tem 5 páginas: home - sobre mim - habilidades - portfólio e contato. cada página é um html. Estou usando como referência essa página https://jacekjeznach.com/ Então o que acontece? cada página que eu fiz o html tem o menu lateral e, em cada tag < a href =""> eu fiz o seguinte

Home que é a index ficou assim < a href ="index.html"> sobre mim < a href ="sobreMim.html"> e assim sucessivamente. Quando eu criei o arquivo JavaScript para adicionar o evento de click nos links para adicionar e remover a classe active, ao clicar em qualquer link do menu a página recarrega e mostra a página referente ao link... ex: eu clico no no link sobre mim e, a página recarrega e aparece a página sobre mim, mas no ícone do menu sobre mim a classe active não fica ativa ela continua ativa somente no ícone da home, eu entendi que isso está acontecendo por causa do reload da página então eu usei o preventDefault no evento de click e funcionou, mas agora ao clicar em qualquer link do menu não carrega a página, então ela não está dinâmica certo? Espero te conseguido ser mais claro e, que você possa me ajudar... Obrigado

Matheus? Alguém? Please!!!

Fala ai Rodolfo, tudo bem? Realmente, se você adicionar o preventDefault no click dos links os mesmos não irão funcionar.

Dado o seu cenário, minha sugestão seria: Remove o preventDefault e deixe as páginas navegarem normalmente.

Para definir qual link do menu está ativo ou não, você pode fazer essa verificação assim que a página for carregada:

document.addEventListener('DOMContentLoaded', () => {
    // verificar qual menu está ativo
})

Para realizar a verificação, você pode pegar qual página está carregada, isso pode ser feito com o window.location.href.

document.addEventListener('DOMContentLoaded', () => {
    const url = window.location.href
    if (url.includes('sobreMim')) {
        // adiciona a classe no menu    
    }
})

Claro que existem N outras maneiras à serem feitas, essa seria talvez a mais simples ao meu ver.

Espero ter ajudado.

solução!

Ah Matheus, o esquema é selecionar a pasta do projeto e, ctrl + shift + del.... Hahaha

Ajudou sim Matheus

Brigadão

Abraço

uhahusahus oloco, não faça isso, probleminhas sempre vão dar mesmo, faz parte.

Fico feliz em ter ajudado, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.