jQuery на mouseout ничего не делать? - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть некоторые эффекты в моем меню, которое работает нормально, но эти эффекты не должны срабатывать в пункте меню, который принадлежит классу "активный".Как мне это сделать?Используя eval или подобные вещи?

Подводя итог: я хочу отрицать эффект, если у триггера есть специальный класс.

Ответы [ 4 ]

2 голосов
/ 27 ноября 2011

В каждом из событий мыши используйте .hasClass() в выражении if():

$('.selector').mouseout(function() {
    if($(this).hasClass('active'))
    {
        return;
    }

    // The rest of your code.
});

Здесь if() проверяет, имеет ли элемент, по которому было запущено событие, класс active. Если это так, функция return s, не выполняет больше кода внутри нее.

Вы не указали код или HTML для работы, так что это общее решение. Пожалуйста, уточните свой вопрос более подробно, чтобы я мог дать вам лучший ответ.

1 голос
/ 27 ноября 2011

привязать к (not) active как это:
$('.menuitem:not(.active)').live('mouseout',function(){});

1 голос
/ 27 ноября 2011

JamWaffles и Cito работают и являются наиболее эффективными, но в качестве альтернативы вы также можете сделать это следующим образом: сначала получите значение класса:

var className = $('.myclass').attr('class');

Затем вы хотите проверить значение

if (className != 'whatever') {

    // animate and stuff etc

}

Но, как я уже сказал, другие методы лучше, так что вы можете также использовать встроенные функции jQuery, такие как hasClass - просто показать несколько способов решения проблем:)

1 голос
/ 27 ноября 2011

В функции триггера просто оберните ваш код с помощью

if ($(this).not('.active')) {
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...