2010-03-30 13 views
11

ho la funzione jquery più fondamentale di tutti, ma non riuscivo a trovare un modo nella documentazione per innescare i contenuti di questa funzione di clic dopo dire 1500 millisecondi:ritardo di base sulla funzione jquery .Click

$('.masonryRecall').click(function(){ 
    $('#mainContent').masonry(); 
}); 

PS ho appena notato la funzione .delay jquery 1.4, anche se sto usando la versione 1.3. Non so se l'aggiornamento di questo potrebbe interferire con uno qualsiasi degli altri javascript che ho attualmente.

risposta

17

È possibile farlo con javascript normale utilizzando setTimeout().

$('.masonryRecall').click(function(){ 
     setTimeout("$('#mainContent').masonry()", 1500); 
    }); 
+0

@Bryon Whitlock Grazie per questo. Solo per aggiungere il suo .masonry(). Ma anche il timeout non sembra funzionare. spara ancora immediatamente ??? – kalpaitch

+0

Ancora grazie per la direzione. solo un'altra piccola modifica e funziona perfettamente: setTimeout ("$ ('# mainContent'). masonry()", 1500); – kalpaitch

+0

Bella cattura. Ho aggiornato la risposta. –

16

In generale, dovresti stare lontano dai valori letterali di stringa in setTimeout/setInterval. Utilizzare invece una chiusura:

setTimeout(function(){ $('#mainContent').masonry(); }, 1500);` 

e anche meglio usare in questo modo (nota: la chiusura esterna non è davvero necessario):

(function($){ 
    var timeout=null; 
    $('.masonryRecall').click(function(){ 
     clearTimeout(timeout); 
     timeout=setTimeout(function(){$('#mainContent').masonry();}, 1500); 
    }); 
}(jQuery)); 
Problemi correlati