Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
Intentando cerrar la ventana emergente haciendo clic fuera del botón de saltos div que la abrió

Tengo un menú de navegación móvil/sensible que se abre con un botón usando jquery. El botón funcionaba muy bien hasta que agregué una secuencia de comandos jquery para cerrar también la ventana si el usuario hace clic en cualquier lugar fuera del menú div, esa secuencia de comandos también funciona según lo previsto para cerrar el menú en todas partes excepto cuando se intenta usar el botón de menú inicial, que ganó no funciona si trato de cerrar el menú con él (pero aún se puede usar para abrir el menú nuevamente si está cerrado).

¿Alguien puede ayudarme a averiguar por qué el botón en sí no funciona?

 $(document).ready(function() { var mobileNav = $('#mobile-nav'); //Toggle hide on the menu $('.btn-navbar').on('click', function(){ mobileNav.toggleClass('d-none'); }); // Hide menu if clicked outside $(document).mouseup(function(e){ if (!mobileNav.is(e.target) && mobileNav.has(e.target).length === 0 && !mobileNav.hasClass('d-none')){ $('#mobile-nav').toggleClass('d-none'); } }); });
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Dado que el evento mouseup se activa antes del evento click , entonces cuando hace clic en .btn-navbar en realidad primero se ejecuta el controlador relacionado con mouseup , y alterna la clase d-none en mobileNav , luego se ejecuta el controlador relacionado con click, y nuevamente alterna la clase d-none en mobileNav , por lo que su visualización nunca cambia, para resolver el problema, en el controlador mouseup puede verificar si el elemento de destino no es .btn-navbar luego alternar la clase d-none , así:

 $(document).mouseup(function(e){ if (!$(e.target).is('.btn-navbar') && !mobileNav.is(e.target) && mobileNav.has(e.target).length === 0 && !mobileNav.hasClass('d-none')){ $('#mobile-nav').toggleClass('d-none'); } });

Aquí hay un ejemplo simple:

 $(document).ready(function() { var mobileNav = $('#mobile-nav'); //Toggle hide on the menu $('.btn-navbar').on('click', function() { mobileNav.toggleClass('d-none'); }); $(document).mouseup(function(e) { if (!$(e.target).is('.btn-navbar') && !mobileNav.is(e.target) && mobileNav.has(e.target).length === 0 && !mobileNav.hasClass('d-none')) { $('#mobile-nav').toggleClass('d-none'); } }); });
 .d-none { display: none } #mobile-nav { background: red }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script> <button class="btn-navbar">Toggle nav</button> <h1 id="mobile-nav" class="d-none">nav content</h1>

about 4 years ago · Santiago Trujillo Relatório

0

No estoy seguro del por qué, pero al botón no le gusta la declaración $ (documento) ... ahora estoy usando la misma función pero usando la identificación del div de contenido principal

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda