Если вы хотите использовать live, вы можете сделать следующее, используя .toggleClass()
, .mouseover()
& .mouseout()
:
$(".content").live("mouseover mouseout", function() {
$(this).toggleClass("highlight");
});
См. Демоверсию здесь
Обновление: Я не мог оставить этот, поэтому продолжил возиться с вашим примером - после комментария вы используете функции в других местах. Итак, вот что я нашел:
Вместо вызова .mouseout()
используйте .mouseleave()
- по некоторым причинам .mouseout()
get вызывается несколько раз, когда мышь вращается - даже вызывается, когда мышь впервые входит в объект ..... Посмотрите демонстрацию в конце, чтобы понять, что я имею в виду здесь
Во-вторых, .delay()
здесь не совсем правильно используется - он действительно предназначен для эффекта очереди - но на самом деле вам нужно добавить функцию с задержкой (хотя это эффект, который вам нужен) , поэтому вместо этого используйте .setTimeout()
, чтобы позвонить вам.
Согласно документам:
Метод .delay()
лучше всего подходит для
задержка между очередями JQuery
последствия. Потому что это ограничено - это
например, не предлагает способ
отменить задержку - .delay()
не
замена для родного JavaScript
.setTimeout()
функция, которая может быть больше
подходит для определенных случаев использования.
Итак, готовые функции будут выглядеть так:
function highlight(_event) {
$(this).addClass("Highlighted");
}
function unhighlight(_event) {
var obj = $(this);
setTimeout(function() {
obj.removeClass("Highlighted");
}, 2000);
}
$(document).ready(function() {
$(".Content").live('mouseenter', highlight);
$(".Content").live('mouseleave', unhighlight);
});
См. Демонстрационную версию здесь , которая покажет вам, что я имею в виду, что событие .mouseout()
запускается несколько раз, где как .mouseleave()
функция вызывается только один раз, когда мышь фактически уходит.
Примечание: используйте кнопку ввода, чтобы нажать предупреждение, не двигайте мышкой !!
См. Демонстрационную версию здесь , чтобы увидеть, как окончательная версия работает здесь как можно ближе к вашему оригиналу.