Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
Cómo verificar si el mouse aún está sobre el elemento en Javascript

Quiero escribir en la consola si el usuario mantiene el mouse sobre un elemento durante más de 2 segundos, este es el código:

 var $els = document.querySelectorAll('#myDiv'); for(i = 0; i < $els.length; i++) { if ($($els[i]).data('track') == 'hover') { $els[i].addEventListener('mouseover', function (e) { setTimeout(function() { if ($($els[i]).is(':hover')) { console.log('mouse is still over this element'); } }, 2000); }); } }

el mensaje se escribe en la consola después de 2 segundos, incluso si mantengo el mouse sobre el elemento menos de 2 segundos. Probablemente me estoy perdiendo algo aquí:

 if ($($els[i]).is(':hover')) {

Gracias por tu ayuda

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Crear una variable global como

var isMouseHover = false;

Llamar a la función en el mouseover llamar a la función mouseover y establecer

isMouseHover = true;

Y llame a mouseout , cuando el mouse salga y se establezca

isMouseHover = false;

Use esta variable isMouseHover cuando lo desee.

Prueba esto:

 let isMouseHover = false let test = document.getElementById("test"); test.addEventListener("mouseleave", function (event) { isMouseHover = false event.target.textContent = "mouse out" console.log(isMouseHover) }, false); test.addEventListener("mouseover", function (event) { isMouseHover = true event.target.textContent = "mouse in" console.log(isMouseHover) }, false);
 <div id="test">hover me</div>

over 4 years ago · Santiago Trujillo Denunciar

0

Editar: actualicé mi respuesta anterior con una mejor solución.

Primero, probablemente tenga varios elementos con la misma identificación y es algo malo, así que cambié a una clase. Luego actualicé su código para simplificarlo y hacerlo más acorde con el espíritu de jQuery:

html:

 <div class="myDiv" data-track='hover'> test </div> <div class="myDiv" data-track='hover'> test2 </div>

JavaScript:

 $('.myDiv[data-track=hover]').on("mouseenter",function(){ var $elem = $(this); $elem.attr("data-hover",true); window.setTimeout(function() { if ($elem.attr("data-hover")) { console.log('mouse is still over this element'); console.log($elem); } }, 2000); }) $('.myDiv[data-track=hover]').on("mouseenter",function(){ $(this).attr("data-hover",false); });

Aquí hay un jsFiddle que funciona.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda