jQuery: si el elemento tiene clase, haga esto

111

Necesito un script jQuery que vea si algún elemento tiene una clase específica y realizará una acción como cambiar de posición.

Esta es la forma, pero no creo que esto 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);
});
Adrián Florescu
fuente
Bueno, dijiste que querías saber si "cualquier" elemento tiene una determinada clase, pero tu selector en tu declaración if solo apunta al elemento que tiene una identificación de "sobre", ¿es eso a propósito? Básicamente tratando de averiguar con qué tienes un problema. ¿También ha probado el código anterior para ver si funciona?
Adrian
¿Votar la pregunta por el hecho de que no cree que funcione? ¿¡¿Qué tal si lo intentas primero?!? Si no funciona, díganos ESPECÍFICAMENTE lo que espera ver y lo que realmente vio.
Ken
@ken: de hecho debería haberlo hecho, pero dado que es un novato humilde, ¿quizás un amable empujón en la dirección correcta hubiera sido más apropiado? Por cierto, @Florescu, si tienes curiosidad por saber si algo funcionará pero no puedes resolverlo, simula el problema en jsfiddle.net y vincúlalo en tu pregunta.
treeface
@treeface: ese es el empujón (en lugar de llamarlo novato humilde ); si actualiza la pregunta a ... ya sabes, en realidad incluye una pregunta, entonces eliminaré mi voto negativo. Mala pregunta (o falta de una pregunta) = voto en contra, para que otros no tengan que perder el tiempo en un tema que no es un tema como este.
Ken

Respuestas:

193

Primero, te faltan algunos paréntesis en tu condicional:

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

Pero también puede simplificar esto para:

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

Si #aboutno tiene la openedclase, no se animará.

Si el problema es con la animación en sí, necesitaríamos saber más sobre el posicionamiento de su elemento (¿absoluto? ¿Absoluto dentro del padre relativo? ¿El padre tiene diseño?)

Ken Redler
fuente