2010-08-10 5 views
2

J'ai un menu dropUp ce qui suit:fonction jquery après setTimeout

$(document).ready(function(){ 
var opened = false; 
$("#menu_tab").click(function(){ 
    if(opened){ 
     $("#menu_box").animate({"top": "+=83px"}, "slow"); 
     setTimeout(function(){ 
       $("#menu_box").animate({"top": "+=83px"}, "slow"); 
       }, 2000); 
       clearTimeout(); 
    }else{ 
     $("#menu_box").animate({"top": "-=83px"}, "slow"); 
    } 
    $("#menu_content").slideToggle("slow"); 
    $("#menu_tab .close").toggle(); 
    opened = opened ? false : true; 
}); 
}); 

Alors après avoir cliqué sur le menu_tab, le menu se et reste jusqu'à cliqué à nouveau, mais je voudrais un délai d'attente de sorte que Après 2 secondes, le menu redescend.

J'ai évidemment le code erroné parce que le délai d'attente ne fonctionne pas. Toute aide serait appréciée! TIA.

Répondre

1

Je pense que vous essayez de faire quelque chose comme ceci:

Essayes:http://jsfiddle.net/YFPey/

var opened = false; 
var timeout; 
$("#menu_tab").click(function() { 
     // If there's a setTimeout running, clear it. 
    if(timeout) { 
     clearTimeout(timeout); 
     timeout = null; 
    } 
    if(opened) { 
     $("#menu_box").animate({"top": "+=83px"}, "slow"); 
    } else { 
     $("#menu_box").animate({"top": "-=83px"}, "slow"); 
      // Set a timeout to trigger a click that will drop it back down 
     timeout = setTimeout(function() { 
      timeout = null; 
      $("#menu_tab").click(); 
     }, 2000); 
    } 
    $("#menu_content").slideToggle("slow"); 
    $("#menu_tab .close").toggle(); 
    opened = !opened; 
});​ 
+0

vous suis! Merci beaucoup! – circey

0

Votre utilisation de clearTimeout() est incorrecte. Vous devez lui transmettre une référence à l'ID renvoyé lorsque vous avez créé ce compteur avec setTimeout().

Impossible de dire si cela cause votre problème (ce n'est probablement pas le cas). Si vous obtenez quelque chose dans la console d'erreur Javascript qui pourrait aider.

0

Deux choses qui se démarquent pour moi:

  1. Parce que opened commence comme fausse, la minuterie ne permet de démarrer le deuxième clic. Dans le gestionnaire de minuterie, devez-vous mettre à jour opened?
Questions connexes