2012-01-23 11 views
1

は、マウスが一度要素が取り上げられた領域の外に移動すると、要素を元に戻してアニメーション化するonmouseoverと呼ばれる関数を持っています。この関数は正常に動作しますが、1回だけ動作します。だから私はmouseover 2回目の機能はトリガされません。私は関数を再びトリガーするためにページを更新する必要があります。いかなる援助も感謝します。Javascript:onmouseoverが1回以上トリガされない

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

なぜ 'slideDwon'が呼び出されるたびにドキュメントにmousemoveイベントをバインドしていますか?彼らはちょうど積み重ね続けるとすぐにあなたのページは本当に遅くなるので、マウスが動くたびに多くのものが行われます。また、onmouseoverイベントを要素からバインド解除しています。ドキュメントから 'mousemove'をアンバインドするつもりでしたか? '$(document).unbind(" mousemove ")' – Esailija

+0

申し訳ありませんが、$(item).unbind()は含まれていませんでした。私はそれを削除した – user1165534

答えて

0

あなたがしてみませんmousemovedocument

から、要素からmouseoverのバインドを解除されています

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'); 
     } 
    }); 
} 
関連する問題