2011-01-10 15 views
2

Hallo allerseits (erster Beitrag!). Ich bin ein JQuery- und Javascript-Neuling.Erste Maus Aufruf von JQuery's .show() zeigt keine Animation

Ich arbeite auf der folgenden Website: http://www.beautifulinteractions.com/lombo/

Ich habe eine benutzerdefinierte J-Datei mit eigenen Funktionen aufrufen JQuery Selektoren und Methoden. Ich rufe die startup() -Funktion von Tag und zwei divs (das Menü und und die Fußzeile) kommen in der richtigen Weise.

Zum ersten Mal (und nur das erste Mal) klicke ich auf ein Menüelement (Auslösen eines .show() Aufrufs über onclick = "javascript: showContent (URL)") das Ziel div wird sichtbar, verblasst aber nicht in - es erscheint nur. Jedes Mal, wenn ich auf einen Menüpunkt klicke, funktioniert die Animation gut.

Was mache ich falsch?
Vielen Dank für Ihre Hilfe.


millis = 600; 

function startup() { 
    $('#hiddenMenu').show(millis, foo()); 
    $('#footer').show(millis, foo()); 
    //$(""+"#hiddenContent"+"").show('slow', foo()); 
} 

function showContent(URL) { 
    $('#hiddenContent').hide(millis, function() { 
             $('#hiddenContent').load(URL); 
             $('#hiddenContent').show(millis, foo()); 
    }); 

} 
function hideContent() { 
    $('#hiddenContent').hide(millis, foo()); 
} 

function foo() { 
    //Do-Nothing 
}` 
+0

nur als Nebenbei bemerkt, Sie Referenzen benötigen eine Funktion als Parameter übergeben . Sie können das tun, indem Sie nur den Funktionsnamen ohne die Paranthesis verwenden. – jAndy

+0

Danke für Ihre Hinweise! – Jacoscaz

Antwort

1

Versuchen Sie showContent Funktion mit dem folgenden ersetzt:

function showContent(URL) { 
    $('#hiddenContent').hide(millis, function() { 
     $(this).load(URL, function() { 
      $(this).show(millis, foo()); 
     }); 
    }); 
} 

Es aufgrund der Tatsache, tut das der $.load Anruf nicht vollständig sein könnte, bevor die show Zeile ausgeführt wird. Das Verschieben des .show in den Rückruf $.load könnte den Trick machen.

+0

Funktioniert nicht - ich bekomme das gleiche Verhalten. – Jacoscaz

+0

@Jacopo - Versuchen Sie @JAndy's Vorschlag: '$ (this) .show (millis, foo);' – karim79

+0

das Hinzufügen der .show() in .load() Callback hat den Trick gemacht. Vielen Dank. Ich appreciate all das. – Jacoscaz

0

Sie haben bereits versucht, eine Ausgabe von der startup() Funktion zu bekommen? durch Konsole oder Alarm? Sie wissen also, ob das Skript läuft oder nicht.

und ein kleiner Tipp .. wenn Sie onclick verwenden Sie nicht verwenden, haben javascript:

so sollten Sie etwas tun:

onclick="startup();" 

sollte genug sein!

EDIT:

machen Sie millis auf diese var:

var millis = 600; 

ohne var Ihr Skript in IE nicht funktionieren

+0

Vielen Dank für Ihre wertvollen Hinweise. startup() funktioniert genauso wie showContent (URL) vom zweiten Aufruf. – Jacoscaz

Verwandte Themen