2012-01-23 7 views
1

имеет функцию, которая называется onmouseover, которая анимирует элемент, который был засунут вниз, после того, как мышь переместилась за пределы области, которую элемент занял, анимирует элемент резервного копирования. Функция работает нормально, но работает только один раз. Поэтому, если я навешиваю второй раз, функция не запускается. Я должен обновить страницу, чтобы функция снова запускалась. Любая помощь будет оценена.Javascript: onmouseover не запускается более одного раза

HTML:

Javascript:

function slideDown(item) { 
    $(item).animate({ 
     top: '-100%' 
    }, 250, 'easeInOutCubic'); 
    $(document).mousemove(function (e) { 
     if (e.pageX < $(item).offset().left || e.pageX > ($(item).offset().left + $(item).width()) || e.pageY < $(item).offset().top || e.pageY > ($(item).offset().top + $(item).height())) { 
      $(item).animate({ 
       top: '-200%' 
      }, 250, 'easeInOutCubic'); 
     } 
    }); 
}; 
+0

Я бы сказал, что проблема с процентами вместо пикселей для вашей анимации. –

+1

Почему вы привязываете событие mousemove к документу каждый раз, когда вызывается «slideDwon»? Они просто продолжат складывание, и скоро ваша страница станет очень медленной, потому что так много всего делается каждый раз, когда мышь перемещается. Вы также отключаете событие onmouseover от элемента. Может быть, вы хотели отвязать 'mousemove' от' document'? Тогда это '$ (document) .unbind (" mousemove ")' – Esailija

+0

извините, $ (item) .unbind() не должен был быть включен. Я удалил его – user1165534

ответ

0

Вы отменяя в mouseover от элемента, не mousemove от document

Попробуйте с:

function slideDown(item) { 
    $item = $(item); 
    $item.animate({ 
     top: '-100%' 
    }, 250, 'easeInOutCubic'); 

    $(document).mousemove(function (e) { 
     var offset = $item.offset(), 
      width = $item.width(), 
      height= $item.height(); 

     if (e.pageX < offset.left || e.pageX > (offset.left + width) || e.pageY < offset.top || e.pageY > (offset.top + height)) { 

      $(document).unbind("mousemove"); 

      $item.animate({ 
       top: '-200%' 
      }, 250, 'easeInOutCubic'); 
     } 
    }); 
} 
Смежные вопросы