jQuery - travail de lien * uniquement * après un certain temps
-
11-10-2019 - |
Question
J'ai un lien:
<a href="#" id="link">Here's my link</a>
Ce n'est pas un lien cliquable normal, il est codé en jQuery comme ceci:
$("#link").hover(function(e) {
e.preventDefault();
$("#tv").stop().animate({marginLeft: "50px"});
$("#tv img)").animate({opacity: 1});
})
Alors, après en vol stationnaire lien cliquables il y a changement de marge # TV et opacité.
Est-il possible de faire ce travail que après l'utilisateur passe la zone de lien avec pointeur pour plus de deux secondes?
Parce que maintenant tout se passe en temps réel.
Je sais qu'il ya delay()
, mais cela ne fonctionne pas parce qu'il retarde simplement l'animation et dans ce cas je ne veux pas any l'action si le pointeur est sur moins de deux secondes.
possible sans une boucle?
La solution
var animateTimeout;
$("#link").hover(function() {
if (animateTimeout != null) {
clearTimeout(animateTimeout);
}
animateTimeout = setTimeout(animate, 2000);
}, function() {
clearTimeout(animateTimeout);
});
function animate() {
//do animation
}
Autres conseils
Qu'est-ce que vous êtes après est appelé hoverIntent .
Vous avez juste besoin un setTimeout()
pour retarder le code, ainsi que un clearTimeout()
pour signaler clairement si les feuilles d'utilisateur le lien dans les 2 secondes.
Exemple: http://jsfiddle.net/mNWEq/2/
$("#link").hover(function(e) {
e.preventDefault();
$.data(this).timeout = setTimeout(function() {
$("#tv").stop().animate({marginLeft: "50px"});
$("#tv img)").animate({opacity: 1});
}, 2000);
}, function(e) {
clearTimeout($.data(this,'timeout'));
});