JQuery парить бесконечный цикл - PullRequest
1 голос
/ 12 января 2011

Я пытаюсь использовать .hover, чтобы сделать HTML-элемент похожим на светящийся.Мой код выглядит так:

var glow = $('<div class="glow">...</div>');

$(this).hover(function() {
   glow.fadeIn();
}, function() {
   glow.fadeOut();
}

Эффект, который я получаю, заключается в том, что замирания просто повторяются снова и снова при наведении курсора мыши в бесконечном цикле.Когда я смотрю на консоль, функции обработчика hoverIn и hoverOut просто продолжают вызываться.

Есть идеи, что может произойти?

Спасибо!

1 Ответ

2 голосов
/ 12 января 2011

Я думаю, что вы хотите использовать этот код вместо:

var glow = $('<div class="glow">...</div>');

glow.hover(function() {
   $(this).fadeIn();
}, function() {
   $(this).fadeOut();
}

или

var glow = $('<div class="glow">...</div>');

glow.hover(function() {
   glow.fadeIn();
}, function() {
   glow.fadeOut();
}

Я считаю, что сейчас ваш $ (this) неоднозначен и, вероятно, не помещает обработчик hover () в нужный объект.

Также возможно, что вы пропустили что-то важное здесь (например, где glow помещено в DOM).

Если хуже становится хуже, вы можете полностью пропустить hover и просто использовать вместо него mouseover и mouseout, или если вы хотите получить руководство действительно обо всем этом, вы можете использовать bind с событиями mouseover и mouseout.

На самом деле, поскольку вы видите повторяющееся действие для одного события наведения мыши, это может указывать на то, что вы каким-то образом привязали множество экземпляров вашего единственного обработчика hover к объекту glow. Вы можете использовать unbind, чтобы удалить текущий обработчик перед привязкой нового, если это в конечном итоге имеет место, но лучше избегать множественного связывания, если вы можете найти способ сделать это.

Надеюсь, это поможет!

...