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()
.