jQuery - Si l'élément a une classe, faites ceci

111

J'ai besoin d'un script jQuery qui verra si un élément a une classe spécifique et effectue une action comme changer de position.

C'est comme ça, mais je ne pense pas que cela fonctionnera.

$("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
la source
Eh bien, vous avez dit que vous voulez savoir si "n'importe quel" élément a une certaine classe mais votre sélecteur dans votre instruction if ne cible que l'élément qui a un identifiant "about" est-ce exprès? Essentiellement, essayez de comprendre avec quoi vous avez un problème. Avez-vous également essayé le code ci-dessus pour voir s'il fonctionne?
Adrian
Question de vote rejetée parce que vous ne pensez pas que cela fonctionnera? Que diriez-vous de l'essayer en premier?!? Si cela ne fonctionne pas, dites-nous SPÉCIFIQUEMENT ce que vous vous attendez à voir et ce que vous avez réellement vu.
ken
@ken: en effet, il aurait dû, mais comme il n'est qu'un simple noob, peut-être qu'un petit coup de pouce dans la bonne direction aurait été plus approprié? Soit dit en passant, @Florescu, si vous êtes curieux de savoir si quelque chose fonctionnera mais que vous ne pouvez pas le comprendre, simulez le problème sur jsfiddle.net et créez un lien vers celui-ci dans votre question.
treeface
@treeface: qui est le petit coup de pouce (au lieu de l'appeler un Noob humble ); s'il met à jour la question pour ... vous savez, inclure une question, alors je retirerai mon vote défavorable. Mauvaise question (ou absence de question) = vote négatif, pour que les autres n'aient pas à perdre leur temps sur un non-problème comme celui-ci.
ken

Réponses:

193

Tout d'abord, il vous manque des parenthèses dans votre conditionnel:

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

Mais vous pouvez également simplifier cela pour:

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

S'il #aboutn'a pas la openedclasse, il ne s'animera pas.

Si le problème vient de l'animation elle-même, nous aurions besoin d'en savoir plus sur le positionnement de votre élément (absolu? Absolu à l'intérieur du parent relatif? Le parent a-t-il une disposition?)

Ken Redler
la source