2010-03-30 9 views
11

mam najbardziej podstawową funkcję jquery z nich wszystkich, ale nie mogłem znaleźć sposób, w dokumentacji, aby wywołać zawartość tej funkcji click powiedzieć po 1500 milisekund:podstawowe opóźnienie funkcji jquery .Kliknij

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

PS właśnie zauważyłem jQuery 1.4 funkcji .delay, chociaż używam wersji 1.3. Nie wiem, czy uaktualnienie tego zakłóciłoby którykolwiek z innych javascript, które obecnie mam.

Odpowiedz

17

Możesz to zrobić ze zwykłym javascript używając setTimeout().

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

@Bryon Whitlock Dzięki za to. Wystarczy dodać jego .masonry(). Ale także limit czasu nie działa. nadal strzela natychmiast? – kalpaitch

+0

Jeszcze raz dziękuję za wskazany kierunek. kolejna drobna zmiana i działa idealnie: setTimeout ("$ ('# mainContent') .masonry()", 1500); – kalpaitch

+0

Przyjemny połów. Zaktualizowałem odpowiedź. –

16

Powinieneś ogólnie trzymać się z dala od literałów ciągowych w setTimeout/setInterval. Zamiast używać Zamknięcie:

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

a nawet lepiej używać go tak (uwaga: zewnętrzna zamknięcia nie jest to konieczne):

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