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?

Était-ce utile?

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'));
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top