jQuery - Wenn das Element eine Klasse hat, tun Sie dies

111

Ich benötige ein jQuery-Skript, das erkennt, ob ein Element eine bestimmte Klasse hat, und eine Aktion wie "Position ändern" ausführt.

Dies ist der Weg, aber ich glaube nicht, dass dies funktionieren wird.

$("a.contact").toggle(function() {
    $("#contact").animate({
        right: '0'
    }, 2000);

    if ($("#about").hasClass("opened")) {
        $("#about").animate({
            right: -700 + "px"
        }, 2000);
    }
}, function() {
    $("#contact").animate({
        right: -700 + "px"
    }, 2000);
});
Adrian Florescu
quelle
Nun, Sie sagten, dass Sie wissen möchten, ob "irgendein" Element eine bestimmte Klasse hat, aber Ihr Selektor in Ihrer if-Anweisung zielt nur auf das Element ab, das die ID "about" hat, ist das absichtlich? Versuchen Sie im Grunde herauszufinden, womit Sie ein Problem haben. Haben Sie auch den obigen Code noch ausprobiert, um zu sehen, ob er funktioniert?
Adrian
Abstimmungsfrage aufgrund der Tatsache, dass Sie nicht glauben , dass es funktionieren wird? Wie wäre es, wenn Sie es zuerst versuchen?!? Wenn es nicht funktioniert, teilen Sie uns SPEZIELL mit, was Sie erwarten und was Sie tatsächlich gesehen haben.
Ken
@ken: Eigentlich hätte er es tun sollen, aber da er nur ein bescheidener Noob ist, wäre vielleicht ein freundlicher Schubs in die richtige Richtung angemessener gewesen? Übrigens, @Florescu, wenn Sie neugierig sind, ob etwas funktionieren wird, aber Sie es nicht herausfinden können, verspotten Sie das Problem auf jsfiddle.net und verlinken Sie es in Ihrer Frage.
Baumgesicht
@treeface: das ist der Anstoß (anstatt ihn einen bescheidenen Noob zu nennen ); Wenn er die Frage aktualisiert auf ... Sie wissen, fügen Sie tatsächlich eine Frage hinzu, dann werde ich meine Ablehnung entfernen. Schlechte Frage (oder Fehlen einer Frage) = Abstimmung nach unten, damit andere ihre Zeit nicht mit einem Nicht-Thema wie diesem verschwenden müssen.
Ken

Antworten:

193

Erstens fehlen in Ihrer Bedingung einige Klammern:

if ($("#about").hasClass("opened")) {
  $("#about").animate({right: "-700px"}, 2000);
}

Sie können dies aber auch vereinfachen, um:

$('#about.opened').animate(...);

Wenn #aboutdie openedKlasse nicht vorhanden ist, wird sie nicht animiert.

Wenn das Problem bei der Animation selbst liegt, müssen wir mehr über Ihre Elementpositionierung wissen (absolut? Absolut innerhalb des relativen übergeordneten Elements? Hat das übergeordnete Element ein Layout?)

Ken Redler
quelle