2013-04-19 2 views
0

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

var currentScroll=0; 
function lockscroll(){ 
    $(window).scrollTop(currentScroll); 
} 


$(document).ready(function(){ 

     $(".sidebarholder, .commentswrapper").hover(function(){ 
      currentScroll=$(window).scrollTop(); 
      $(window).bind('scroll',lockscroll); 

     }) 



}) 

Мой вопрос в том, как мне отвязать его при мыши?

Если я это сделаю, он просто перестанет работать вообще.

$(".sidebarholder, .commentswrapper").mouseout(function(){ 
     currentScroll=$(window).scrollTop(); 
     $(window).unbind('scroll'); 

    }) 

ответ

3

JQuery-х hover() имеет встроенный "парить от", которые могут быть полезны:

$(".sidebarholder, .commentswrapper").hover(
    function(){ // hover over 
     currentScroll=$(window).scrollTop(); 
     $(window).bind('scroll',lockscroll); 
    }, 
    function(){ // hover off 
     currentScroll=$(window).scrollTop(); 
     $(window).unbind('scroll',lockscroll); 
    } 
    ) 

http://api.jquery.com/hover/

+0

Это работает, но он ломает бесконечна прокручивание, а после того, как вы наведите курсор, я не могу понять, почему? – andy

+0

Я предполагаю, что это из-за 'unbind ('scroll')', но я не уверен. Ваша бесконечная прокрутка также может быть связана с «прокруткой». Возможно, попробуйте: '$ (window) .unbind ('scroll', lockscroll); вместо этого. – showdev

+0

не должен отвязывать его, эффективно сбросить его? – andy

0

Вы пробовали

 $(document).ready(function() { 
     $(".sidebarholder, .commentswrapper").hover(function() { 
      currentScroll = $(window).scrollTop(); 
      $(window).bind('scroll', lockscroll); 

     }, function() { 
      currentScroll = $(window).scrollTop(); 
      $(window).unbind('scroll'); 

     }) 
    }) 
Смежные вопросы