Javascript 已在顶部时检测滚动事件

Javascript 已在顶部时检测滚动事件,javascript,scroll,jquery,scrolltop,Javascript,Scroll,Jquery,Scrolltop,我有一个菜单栏在我的页面顶部,我想显示如果我向上滚动,而已经在顶部。想象一下你向上滚动,当你在那里移动时,你再次向上滚动,这个条就会显示出来 我使用jquery编写了这段代码 // listen for the scroll to show the top menu var was_on_top = false; $(function () { $(window).bind("scroll", function (e) { if ($(window).scrollTop

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

我使用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;
    }
}
//听滚动条以显示顶部菜单
var在顶部=false;
$(函数(){
if(window.addEventListener){
addEventListener('DOMMouseScroll',onMouseWheelSpin,false);//FireFox
window.addEventListener('mousewheel',onMouseWheelSpin,false);//Chrome
}否则{
window.onmouseheel=onmouseheelspin;
}
});
MouseWheelSpin功能(事件){
如果(!event)//IE糟透了
event=window.event;
如果($(窗口).scrollTop()==0&&
(
event.detail<0//Firefox
||
(event.wheelDelta和(
(window.opera&&event.wheeldta<0)//opera
||
event.wheelDelta>0//IE
)
)
)
) {
if($('.menu').css('display')==“none”&&was在顶部){
$('.menu').slideDown();
}否则{
was_on_top=真;
}
}否则{
was_on_top=false;
}
}

滚动事件不会触发,因为窗口不再滚动

您可能需要为鼠标滚轮本身创建自定义事件

这可能会有帮助: