2012-10-17 57 views
1

我有一个菜单栏在我的页面顶部,我想显示如果我已经上面滚动了。想象一下,当你向上滚动时,在那里再次向上滚动,酒吧就会显示出来。检测滚动事件,而已经在顶部

我有这样的代码使用jquery

// listen for the scroll to show the top menu 
var was_on_top = false; 
$(function() { 
    $(window).bind("scroll", function (e) { 

     if ($(window).scrollTop() == 0) { 
      if ($('.menu').css('display') == "none" && was_on_top) { 
       $('.menu').slideDown(); 
      } else { 
       was_on_top = true; 
      } 
     } else { 
      was_on_top = false; 
     } 
    }); 
}); 

但滚动不会触发事件,而已经在上面。有任何想法吗?

编辑:这里去工作代码。测试FF,Chrome和IE9

// listen for the scroll to show the top menu 
var was_on_top = false; 
$(function() { 
    if (window.addEventListener) { 
     window.addEventListener('DOMMouseScroll', onMouseWheelSpin, false); // FireFox 
     window.addEventListener('mousewheel', onMouseWheelSpin, false); // Chrome 
    } else { 
     window.onmousewheel = onMouseWheelSpin; 
    } 
}); 

function onMouseWheelSpin(event) { 

    if (!event) // IE sucks 
     event = window.event; 

    if ($(window).scrollTop() == 0 && 
      (
      event.detail < 0 // Firefox 
      || 
      (event.wheelDelta && (
            (window.opera && event.wheelDelta < 0) // Opera 
            || 
            event.wheelDelta > 0 // IE 
           ) 
      ) 
     ) 
     ) { 
     if ($('.menu').css('display') == "none" && was_on_top) { 
      $('.menu').slideDown(); 
     } else { 
      was_on_top = true; 
     } 
    } else { 
     was_on_top = false; 
    } 
} 

回答

0

当你在上面,不会触发事件,你可以使用这个插件来检测轮事件。

http://archive.plugins.jquery.com/project/mousewheel