Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

142
Views
Submenú abierto al pasar el mouse y no permanecer abierto

tengo este menú

 <nav class="navMenu2"> <a data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop" href="#">Serviços</a> <a href="<?php echo $precos ?>">Preços</a> <a href="<?php echo $clientes ?>">Clientes</a> <a class="contacto" href="<?php echo $contactos ?>">Contactos</a> <div class="escondido"> <a href="#">Sobre Nós</a> <a href="#">Recrutamento</a> </div> <a class="pedir-demo" href="<?php echo $pedirdemo ?>">Pedir Demo</a> <div class="dot"></div> </nav>

Y estoy tratando de hacer un submenú en el div "escondido", pero no permanece abierto al pasar el mouse.

mi JS:

 $('.contacto, .escondido').mouseenter(function(){ if ( $(".escondido").is(':hidden') ) { $(".escondido").slideDown(200); } else { $(".escondido").slideUp(200); } });

y violín: https://jsfiddle.net/r7Lm2dg3/

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Aquí les dejo mi acercamiento. Lo primero, tengo que preguntar: ¿Por qué estás usando jquery en lugar de CSS puro? Porque puede lograr un efecto de desplazamiento para su menú desplegable.

Luego, si solo reconfigura la estructura DOM de la siguiente manera, el mouse solo dejará el menú desplegable <div> solo cuando deje toda la clase .has-dropdown .

 $('.has-submenu').mouseenter(function(){ if ( $(".escondido").is(':hidden') ) { $(".escondido").slideDown(200); } else { $(".escondido").slideUp(200); } });
 nav { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: initial; ul { list-style: none; li { list-style: none; } } } .contactos{ font-size: x-large; a{ text-decoration: none; color: black; } } .has-submenu { position: relative; } .escondido { display: none; position: absolute; bottom: 0; left: 0; padding-top: 10px; transform: translateY(100%); z-index: 1; ul { background: red; padding: 15px; margin: 0; white-space: nowrap; } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <nav class="navMenu2"> <li><a data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop" href="#">Serviços</a></li> <li><a href="<?php echo $precos ?>">Preços</a></li> <li><a href="<?php echo $clientes ?>">Clientes</a></li> <li class="has-submenu"> <a class="contacto" href="<?php echo $contactos ?>">Contactos</a> <div class="escondido"> <ul> <li><a href="#">Sobre Nós</a> </li> <li><a href="#">Recrutamento</a> </li> </ul> </div> </li> <li><a class="pedir-demo" href="<?php echo $pedirdemo ?>">Pedir Demo</a></li> </nav>

about 4 years ago · Juan Pablo Isaza Report

0

Aquí está mi solución. Cambié el objeto y agregué el evento mouseleave. Espero que se ajuste a sus necesidades.

 $('.contacto').mouseenter(() =>{ if ( $(".escondido").is(':hidden') ) { $(".escondido").slideDown(200); } }); $('.escondido').mouseleave(() =>{ if ( $(".escondido").is(':visible') ) { $(".escondido").slideUp(200); } });
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!