una tiempo termine que parar para intervalo hacer funcion esperar ejecutar despues javascript jquery hover delay

javascript - termine - retraso() o tiempo de espera con detener()?



parar tiempo javascript (4)

$(''.file a'').live(''mouseenter'', function() { $(''#download'').stop(true, true).fadeIn(''fast''); }).live(''mouseleave'', function() { $(''#download'').stop(true, true).fadeOut(''fast''); });

Quiero que la función mouseenter tenga un stop() y un retraso de 1 segundo. Por lo tanto, si #download el fadeIn sobre #download el fadeIn debería comenzar después de un retraso de 1 segundo. Si saco el mouse, el fadeIn no debería comenzar. ¿Consígueme?

Realmente no sé cómo hacer eso, ¿alguna idea?


Estaba buscando la respuesta a una pregunta similar, y encontré que .animate () también podría usarse para manejar esto, y obedece a .stop ()

Se vería algo como esto:

$(''.file a'').live(''mouseenter'', function() { $(''#download'') .stop(true, true) .animate({opacity:0}, 1000); // one second delay .animate({opacity:1}, ''fast'', ''swing''); }).live(''mouseleave'', function() { $(''#download'') .stop(true, true) .animate({opacity:0}, ''slow'', ''swing''); });


Puedes usar esto en jquery sin usar el evento de retardo.

$(''.file a'').hover(function() { time = setTimeout(function() { $(''#download'').fadeIn(); },1000); },function(){ clearTimeout(time); });

1000 es su tiempo que después de que $ (''# download'') se desvanecerá.


Usa una función setTimeout

$(''.file a'').live(''mouseenter'', function() { setTimeout(function(){ $(''#download'').stop(true, true).fadeIn(''fast''); }, 1000); }).live(''mouseleave'', function() { $(''#download'').stop(true, true).fadeOut(''fast''); });

setTimeout ejecutará el código dentro de la función después de los milisegundos especificados (en este caso 1000).


setTimeout() usar setTimeout() en este caso debido a cómo funciona .delay() (y su incapacidad para cancelarlo).

$(''.file a'').live(''mouseenter'', function() { $.data(this, ''timer'', setTimeout(function() { $(''#download'').stop(true, true).fadeIn(''fast''); }, 1000)); }).live(''mouseleave'', function() { clearTimeout($.data(this, ''timer'')); $(''#download'').stop(true, true).fadeOut(''fast''); });

Puedes darle una oportunidad aquí .

Si usa .delay() se eliminará de la cola la siguiente animación del elemento, independientemente de si eliminó esa cola antes . Por lo tanto, necesita un tiempo de espera que pueda cancelar, tal como se hace anteriormente, llamando manualmente a setTimeout() y almacenando el resultado con $.data() para que pueda borrarlo más tarde, mediante clearTimeout() .