2010-07-13 3 views
0

Je possède ce code:Pourquoi jquery fadeOut agit-il étrangement avec setTimeout?

clearTimeout(tooltiptimeout); 
tooltiptimeout=""; 

$("#tool").fadeOut("slow").queue(function(){ 
    tooltiptimeout=setTimeout(function(){ 
     $("#tool").css("left",item.pageX-33); 
     $("#tool").css("top",item.pageY-95); 
     $("#tool").fadeIn("slow"); 
    }, 1000); 
    $(this).dequeue(); 
}); 

Ce qu'il faut faire est la suivante: En tant que l'utilisateur passe son/sa souris sur un objet, une info-bulle affichera là-bas. Ensuite, lorsque l'utilisateur déplace la souris, l'info-bulle devrait immédiatement commencer à disparaître. Plus tard, lorsque l'utilisateur appuie sa souris sur un autre objet, un délai d'attente d'une seconde est appelé avant que l'info-bulle n'apparaisse au nouvel emplacement. Le problème est que, pour le moment, le fadeout n'est pas appelé immédiatement et ne se produit qu'à la fin du setTimeout. (c'est-à-dire au lieu de disparaître d'abord puis de s'afficher un peu plus tard, l'info-bulle reste en place, puis un peu plus tard, elle disparaît et se fond dans un nouvel emplacement).

Ce qui donne?

BTW, ce code a le même problème:

$("#tool").fadeOut("slow",function(){ 
    tooltiptimeout=setTimeout(function(){ 
     $("#tool").css("left",item.pageX-33); 
     $("#tool").css("top",item.pageY-95); 
     $("#tool").fadeIn("slow"); 
    }, 1000); 
}); 

Répondre

2

Edit: Changé la réponse en fonction de commentaires mis à jour ci-dessous.

les opérations suivantes:

$("#tool").fadeOut("slow").delay('1000') 
    .css("left",item.pageX-33) 
    .css("top",item.pageY-95) 
    .fadeIn("slow"); 
+0

C'est le contraire de ce que je veux bien. =/Je veux que le fondu se produise immédiatement, mais que le fondu se produise 1 seconde plus tard. En ce moment, ils se produisent tous les deux 1 seconde plus tard. –

+1

Ahhh ok! Essayez ceci ensuite '.fadeOut ('lent'). Delay (1000) .fadeIn ('lent');' API Docs on delay - http://jqapi.com/#p=delay – HurnsMobile

+0

haha ​​ça marche! Je suis toujours curieux de savoir pourquoi la solution précédente ne fonctionne pas. –