我的页面顶部有一个菜单栏,如果我已在顶部向上滚动,我想显示该菜单栏。想象一下,你向上滚动,然后在那里,你再次向上滚动,栏会显示。
我有使用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 :(得分:0)
滚动事件不会触发,因为窗口不再滚动。
您可能需要为鼠标滚轮本身创建自定义事件。
这可能会有所帮助:Javascript: Capture mouse wheel event and do not scroll the page?
答案 1 :(得分:0)
当您处于最顶层时,不会触发事件,您可以使用此插件来检测车轮事件。
http://archive.plugins.jquery.com/project/mousewheel