jQuery - Если у элемента есть класс, сделайте это

111

Мне нужен сценарий jQuery, который будет видеть, имеет ли какой-либо элемент определенный класс, и выполнять такое действие, как изменение позиции.

Это способ, но я не думаю, что это сработает.

$("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);
});
Адриан Флореску
источник
Хорошо, вы сказали, что хотите знать, имеет ли «любой» элемент определенный класс, но ваш селектор в вашем операторе if нацелен только на элемент с идентификатором «about», это нарочно? В основном пытаюсь понять, с чем у вас проблемы. Вы также пробовали приведенный выше код, чтобы убедиться, что он работает?
Адриан
Голосование отклоняет вопрос из-за того, что вы не думаете, что это сработает? Как насчет того, чтобы сначала попробовать?!? Если это не сработает, сообщите нам КОНКРЕТНО, что вы ожидаете увидеть и что вы видели на самом деле.
Кен
@ken: в самом деле, он должен был это сделать, но, поскольку он всего лишь скромный новичок, возможно, более уместно было бы подтолкнуть его в правильном направлении? Между прочим, @Florescu, если вам интересно, будет ли что-то работать, но вы не можете это понять, смоделируйте проблему на jsfiddle.net и дайте ссылку на нее в своем вопросе.
treeface
@treeface: что это подталкивание (вместо называя его кроткий нуб ); если он изменит вопрос на ... ну, на самом деле, включит вопрос, то я удалю свой голос против. Плохой вопрос (или отсутствие вопроса) = голосование "против", чтобы другим не приходилось тратить свое время на такие вопросы, как эта.
Кен

Ответы:

193

Во-первых, в условном выражении отсутствуют скобки:

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

Но вы также можете упростить это до:

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

Если у #aboutнего нет openedкласса, он не будет анимирован.

Если проблема связана с самой анимацией, нам нужно больше узнать о позиционировании вашего элемента (абсолютное? Абсолютное внутри относительного родителя? Есть ли у родителя макет?)

Кен Редлер
источник