jQuery зависает после смены DOM - PullRequest
0 голосов
/ 01 апреля 2011

Вот как я использую jQuery hover

hover (handlerIn (eventObject), handlerOut (eventObject))

$(".box").each(function() {
    var $this = $(this);
    $this.data('baseColor', $this.css('background-color'));
    $this.hover(function() {
        $this.animate( {
            backgroundColor : "white"
        }, 50);
    }, function() {
        $this.animate( {
            backgroundColor : $this.data('baseColor')
        }, 50);
    });
});

Проблема в том, что при изменении DOM эффект при наведении больше не работает. Я знаю, что метод live много раз решал такие проблемы для меня, но как мне решить эту проблему в этом случае?

1 Ответ

3 голосов
/ 09 апреля 2011

Из руководства :

Все анимированные свойства должны быть анимированы в одно числовое значение, кроме как указано ниже;большинство нечисловых свойств не может быть анимировано с использованием основных функций jQuery.(Например, width, height или left могут быть анимированными, но background-color не может быть.) Значения свойств обрабатываются как количество пикселей, если не указано иное.Единицы измерения em и% можно указать, где это применимо.

В частности For example, width, height, or left can be animated but background-color cannot be.

Если вы пытаетесь просто обновить цвет фона на белый, попробуйте:

 $this.hover(function() {
      $this.css('background-color', '#fff');
 }, function() {
      $this.css('background-color',$this.data('baseColor'));
 });

Если вы пытаетесь заставить эффект появляться через 50 мс после зависания пользователя, попробуйте использовать delay .

Теперь, если вы пытаетесь перейти от текущего цвета кбелый, вы должны узнать о смешивании цветов.Но чтобы избавить вас от хлопот, вот отличный сценарий Майкла Лейгебера .Поддерживается выцветание фона.


...