2010-03-30 12 views
11

Ich habe die grundlegendsten jquery Funktion von allen, aber ich konnte nicht einen Weg in der Dokumentation zu triggern, den Inhalt dieser Klick-Funktion nach sagen 1500 Millisekunden finden:Grundverzögerung auf jquery .click Funktion

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

PS habe gerade die .delay-Funktion jquery 1.4 bemerkt, obwohl ich Version 1.3 verwende. Ich weiß nicht, ob die Aktualisierung das andere Javascript, das ich derzeit habe, beeinträchtigen würde.

Antwort

17

Sie können es mit regulärem JavaScript unter Verwendung setTimeout() tun.

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

@Bryon Whitlock Vielen Dank dafür. Nur um seine Mauer hinzuzufügen(). Aber auch das Timeout scheint nicht zu funktionieren. es feuert immer noch sofort ??? – kalpaitch

+0

Nochmals vielen Dank für die Richtung. nur eine weitere kleine Änderung und es funktioniert perfekt: setTimeout ("$ ('# mainContent'). Maurerarbeit()", 1500); – kalpaitch

+0

Schöner Fang. Ich habe die Antwort aktualisiert. –

16

Normalerweise sollten Sie in setTimeout/setInterval von String-Literalen weg bleiben. Statt einen Verschluss verwenden:

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

und noch besser nutzen es so (Anmerkung: die äußere Verschluss nicht wirklich notwendig ist):

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