Si la souris survole pendant plus de 2 secondes, alors montrez que le rest ne le fait pas?

Voici une fonction de diapositive jQuery que j’ai appliquée à un div en survol afin de faire glisser un bouton vers le bas.

Cela fonctionne bien, sauf que maintenant, chaque fois que quelqu’un entre et sort de celui-ci, il ne cesse de bouger.

Je pensais que si je mettais un retardateur d’une ou deux secondes dessus, cela aurait plus de sens.

Comment pourrais-je modifier la fonction pour n’exécuter la diapositive que si l’utilisateur est sur la div pendant plus d’une seconde ou deux?

  $("#NewsSsortingp").hover( function () { $("#SeeAllEvents").slideDown('slow'); }, function () { $("#SeeAllEvents").slideUp('slow'); });  

Vous devez définir une timer au passage de la souris et l’effacer soit lorsque la diapositive est activée, soit à la sortie de la souris, selon la première éventualité:

 var timeoutId; $("#NewsSsortingp").hover(function() { if (!timeoutId) { timeoutId = window.setTimeout(function() { timeoutId = null; // EDIT: added this line $("#SeeAllEvents").slideDown('slow'); }, 2000); } }, function () { if (timeoutId) { window.clearTimeout(timeoutId); timeoutId = null; } else { $("#SeeAllEvents").slideUp('slow'); } }); 

Voir en action.

 var time_id; $("#NewsSsortingp").hover( function () { if (time_id) { clearTimeout(time_id); } time_id = setTimeout(function () { $("#SeeAllEvents").stop(true, true).slideDown('slow'); }, 2000); }, function () { if (time_id) { clearTimeout(time_id); } time_id = setTimeout(function () { $("#SeeAllEvents").stop(true, true).slideUp('slow'); }, 2000); });