2010-03-30 25 views
11

tengo la función jQuery más básico de todos ellos, pero no pude encontrar una manera en la documentación para activar los contenidos de esta función de clic después de 1500 milisegundos decir:retardo básico en la función jQuery .click

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

PD acabo de notar la función .delay jquery 1.4, aunque, estoy usando la versión 1.3. No sé si actualizar esto interferiría con cualquiera de los otros javascript que tengo actualmente.

Respuesta

17

Puede hacerlo con javascript normal utilizando setTimeout().

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

@Bryon Whitlock Gracias por eso. Solo para agregar su .masonry(). Pero también el tiempo de espera no parece estar funcionando. todavía dispara de inmediato? – kalpaitch

+0

Nuevamente gracias por la dirección. solo otra alteración menor y funciona perfectamente: setTimeout ("$ ('# mainContent'). masonry()", 1500); – kalpaitch

+0

Buena captura. Actualicé la respuesta. –

16

En general, debe mantenerse alejado de los literales de cadenas en setTimeout/setInterval. En lugar de utilizar un cierre:

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

e incluso mejor utilizar de esta manera (nota: el cierre exterior no es realmente necesario):

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