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

230
Views
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

about 4 years ago · Santiago Trujillo
2 answers
Answer question

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>

about 4 years ago · Santiago Trujillo Report

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.

about 4 years ago · Santiago Trujillo 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!