2012-03-26 11 views
1

Ich bin mit jQuery-Version 1.7.1 von Google CDN und haben den folgenden Code:jQuery Verzögerung wird ignoriert und führt Geschwister

$(menuInstance).delay(2000).removeClass('loading').html(ul);

jedoch die Verzögerung ignoriert und es bewegt sich direkt auf meine entfernen Klasse und HTML einfügen. Irgendwelche Ideen, warum die Verzögerung ignoriert wird? Danke

+0

Sind Aufruf Sie diesen Code in einem '$ (document) .ready()' Block? –

+1

Ich denke Verzögerung gilt nur für Jquery-Effekte wie Fade. –

+0

http://api.jquery.com/delay/: "Nur nachfolgende Ereignisse in einer Warteschlange verzögern sich; dies verzögert z. B. nicht die Argumente ohne Argumente von .show() oder .hide(), die das nicht verwenden Effektwarteschlange. " 'removeClass' verwendet auch nicht die Effekte-Warteschlange. (Fühlen Sie sich nicht schlecht; wir haben alle versucht, 'delay()' auf diese Weise zu verwenden.) – Blazemonger

Antwort

4

Sie können .delay nicht so verwenden. Sie müssen setTimeout verwenden.

setTimeout(function() { 
    $(menuInstance).removeClass('loading').html(ul); 
}, 2000); 

delay kann nur für animation Warteschlangen verwendet werden.

3

, die nicht ist, was .delay() tut ..

die Dokumentation Einchecken im http://api.jquery.com/delay/

Zitat

Beschreibung: Stellen Sie einen Timer zu Verzögerung der Ausführung nachfolgender Elemente in der Warteschlange.

und

Die .delay() Verfahren ist am besten für die Effekte zwischen jQuery Warteschlange verzögern. Weil es begrenzt ist - es bietet beispielsweise keine Möglichkeit, die Verzögerung abzubrechen - ist .delay() kein Ersatz für die native JavaScript-Funktion setTimeout, die für bestimmte Anwendungsfälle möglicherweise besser geeignet ist.

Wie Sie sehen können, funktioniert es nur mit jQuery-Warteschlangen.