jQuery - se o elemento tiver classe, faça isso

111

Preciso de um script jQuery que verá se algum elemento tem uma classe específica e fará uma ação como mudar de posição.

É assim que funciona, mas não acho que funcione.

$("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
fonte
Bem, você disse que quer saber se "qualquer" elemento tem uma determinada classe, mas seu seletor em sua instrução if está direcionando apenas o elemento que tem um id "sobre", é proposital? Basicamente tentando descobrir qual é o seu problema. Também já experimentou o código acima para ver se funciona?
Adrian
Votando questão cancelada devido ao fato de que você acha que não vai funcionar? Que tal você tentar primeiro?!? Se não funcionar, diga-nos ESPECIFICAMENTE o que você espera ver e o que realmente viu.
ken
@ken: na verdade ele deveria, mas como ele é apenas um novato humilde, talvez um empurrãozinho na direção certa fosse mais apropriado? A propósito, @Florescu, se você está curioso para saber se algo vai funcionar, mas não consegue descobrir, simule o problema em jsfiddle.net e coloque um link para ele em sua pergunta.
treeface
@treeface: esse é o cutucão (em vez de chamá-lo de noob humilde ); se ele atualizar a pergunta para ... você sabe, incluir uma pergunta, então removerei meu voto negativo. Pergunta ruim (ou falta de pergunta) = voto negativo, para que os outros não tenham que perder seu tempo com um não-problema como este.
ken

Respostas:

193

Primeiro, faltam alguns parênteses em sua condicional:

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

Mas você também pode simplificar para:

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

Se #aboutnão tiver a openedclasse, ela não será animada.

Se o problema for com a própria animação, precisaremos saber mais sobre o posicionamento do seu elemento (absoluto? Absoluto dentro do pai relativo? O pai tem layout?)

Ken Redler
fonte