2010-12-10 15 views
8

Sto usando strumenti Jquery, effetto overlay e voglio chiuderlo, se la risposta JSON è OK, ma voglio farlo con un ritardo. .Come ritardare .trigger ('click') con overlay da strumenti 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');      
         } 
        } 
      }); 

quindi questo - jQuery ('stretta ') trigger (' click'); deve essere eseguito dopo un po 'di tempo. Qualche idea?

risposta

23

setTimeout() è una funzione JavaScript nativa progettata per questo scopo.

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

L'ultimo numero è il tempo di ritardo in millisecondi.

+0

thanx) funziona) –

+0

I -would- pensare, lo stesso (zucchero sintattico ..) sarebbe possibile per $ ('# Nivo'). Ritardo (5000) .load ( –

+0

@Fronker , non funzionerebbe con il delay(). load (...), perché il .load() non si preoccupa della funzione .delay(), come per esempio .show(), solo le funzioni che usare la coda jQuery sarebbe in grado di usare gli effetti del delay(). – userfuser

6

uso setTimeout:

ritardo ecco 1 secondo (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 testato.

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

'.delay()' funziona solo con effetti in jQuery che usano la coda effetti. '.trigger()' non è uno di quelli. – TelegramSam