2010-12-10 55 views
8

J'utilise les outils Jquery, superposer l'effet et vouloir le fermer, si la réponse JSON est OK, mais je veux le faire avec un délai.Comment retarder .trigger ('click') avec superposition depuis les outils jquery

$.ajax({ 
       //bla bla 
       success: function(data){ 
         var obj = jQuery.parseJSON(data); 
         if (obj.status=='OK') 
         { 
          $('#status').text('bla bla'); 
          jQuery('.close').trigger('click'); 
         } 
         else 
         { 
          $('#status').text('bla bla');      
         } 
        } 
      }); 

alors ceci - jQuery ('. Close'). Trigger ('click'); doit être exécuté après un certain temps. Des idées?

Répondre

23

setTimeout() est une fonction JavaScript native conçue à cet effet.

setTimeout(function() { 
    jQuery('.close').trigger('click'); 
}, 1000); 

Le dernier nombre correspond au délai en millisecondes.

+0

Thanx), il fonctionne) –

+0

Je -would- penserai, la même (sucre syntaxique ..) serait possible par $ ('# nivo'). Retard (5000) .load ( –

+0

@Fronker , cela ne fonctionnerait pas avec le delay(). load (...), car le .load() ne se soucie pas de la fonction .delay(), par exemple .show(), par exemple. utiliser la file d'attente jQuery serait capable d'utiliser les effets du delay(). – userfuser

6

utilisation setTimeout:

retard ici est de 1 seconde (1000 ms)

$.ajax({ 
       //bla bla 
       success: function(data){ 
         var obj = jQuery.parseJSON(data); 
         if (obj.status =='OK') 
        { 
         $('#status').text('bla bla'); 
         setTimeout(function(){jQuery('.close').trigger('click');},1000); 

        } 
        else 
        { 
         $('#status').text('bla bla');      
        } 
       } 
     }); 
-3

Non testé.

jQuery('.close').delay(500).trigger('click'); 
+2

'.delay()' ne fonctionne qu'avec les effets de jQuery qui utilisent la file d'effets. '.trigger()' n'en fait pas partie. – TelegramSam