2 Stimmen

If-Anweisungen, die übersprungen oder seltsam ausgewertet werden, JavaScript und jquery

In jQuery habe ich also eine globale Variable "currentSubNav", die ein aktuell sichtbares Element speichert. Der folgende Code wird bei "mouseenter" ausgeführt.

Ich brauche es, um die ID des Speicherelements zu erhalten und zu prüfen, ob es eine gab. Wenn nicht, setzen Sie das neue sichtbare Element auf den Standard.

$('#mainMenu a').mouseenter(function() {
    var newName = $(this).attr("id");
    if(newName == ''){
        var newName = "default";
    }

Dann wird geprüft, ob das neue Element mit dem aktuellen übereinstimmt. Wenn ja, kehrt es zurück. Wenn nicht, werden die Animationen ausgeführt, um das neue Element einzufügen.

    if(newName == currentSubNav){
     return;
    }else{
     $("div[name=" + currentSubNav + "]").animate({"left": "+=600px", "opacity": "toggle"}, "slow");
     $("div[name=" + newName + "]").css({"margin-top": "0"});
     $("div[name=" + newName + "]").fadeIn(2000);
     $("div[name=" + currentSubNav + "]").animate({"left": "-=600px"}, 0);
     currentSubNav = newName;
     return;
    }
});

Ich verwende derzeit Chrome, und laut den Entwicklungstools ist das nicht der Fall.

Problem Nr. 1

"$(this).attr("id");" gibt nicht undefiniert zurück, wie in der Dokumentation angegeben. Es scheint, dass "" zurückgegeben wird. ABER, wenn ich die if-Anweisung habe, wie ich es oben tue, wird die Anweisung komplett übersprungen. Ich habe einen Haltepunkt gesetzt, aber die Ausführung wird nie angehalten, so dass die Anweisung nie ausgewertet wird.

Problem Nr. 2

Nachdem die Animationen auftreten, anstatt mit der Rückkehr am Ende der Anweisungen geht es zurück und verwendet die Rückkehr für die "newName == currentSubNav" if-Anweisung. Ich denke, das ist keine große Sache, aber es ist nicht das beabsichtigte Verhalten.

Ich bin ziemlich neu in JavaScript, und es scheint, ich bin etwas darüber, wie JavaScript funktioniert fehlt. Aber ich kann nirgends etwas finden. Kann mir jemand helfen?

EDIT: Es scheint in FireFox zu funktionieren (obwohl jQuery nicht undefiniert, sondern '' zurückgibt). Also ist dies ein Chrome Problem im Moment.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X