Как я могу сделать так, чтобы мои события всегда запускались в jQuery? [Hover Callback не стреляет] - PullRequest
1 голос
/ 12 февраля 2010

У меня есть анимация изображения BG, которая использует обратный вызов hover для возврата в исходное состояние. Если я быстро наведу указатель мыши на ссылки, состояние зависания останется. Я предполагаю, что я отключаю мышь до завершения первой анимации, поэтому обратный вызов не регистрируется.

Есть ли более пуленепробиваемый способ написания этой функции?

$('.nav li a').hover(function() {
    $(this).addClass('hovered', 300);
}, function() {
    $(this).removeClass('hovered', 300);
});

(используется плагин BGimg для поддержки параметра скорости в add / removeClass)

Проверяется здесь: McPherson Industries

Ответы [ 2 ]

2 голосов
/ 12 февраля 2010

Это распространенная проблема, и я не могу ее исправить, я боюсь & ndash; браузер должен следить за событиями, а если нет, то вам не повезло.

Впрочем, это может быть и ошибка jQuery. Трудно сказать, не вдаваясь в исходный код. В любом случае, есть простой обходной путь:

$('.nav li a').hover(function() {
    // When element is hovered, remove hovered state from all elements..
    $('.hovered').removeClass('hovered');
    // ..and add it to this one.
    $(this).addClass('hovered', 300);
}, function() {
    // This is only needed when exiting an element and not enterin another one
    $(this).removeClass('hovered', 300);
});

Это не может быть на 100% уверенно, но это лучше, чем ваш текущий.

0 голосов
/ 12 февраля 2010

Что такое значение 300 в методе addClass? он не принимает два параметра .. только один
Api ссылка: http://api.jquery.com/addClass/
( ок, заметил плагин )

Это прекрасно работает для меня ... все ссылки возвращаются к исходному изображению, независимо от того, как быстро я двигаю мышь.

Обновление

Хорошо, теперь я вижу проблему ..

  • Хром в порядке ( единственный, который кажется .. )
  • Firefox показывает проблему ..
  • IE показывает проблему

Обновление 2 Мне кажется, что проблема в том, какой плагин вы используете. Он игнорирует запросы в очереди к тому же объекту, пока не закончится текущая анимация. Так что, если вы наведите курсор мыши до завершения первого, он не вернется в нормальное состояние.

Я не могу помочь с этим, извините ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...