向上滚动时,不要让函数在顶部执行。当向下滚动时在锚点

时间:2014-09-17 07:56:15

标签: javascript jquery scroll mousewheel

当页面位于顶部或某个锚点时,有没有办法不让函数执行?

这是我的功能,只要鼠标滚轮滚动就会运行:

$(document).on('mousewheel DOMMouseScroll', function(MyFunction) {
// some stuff is happening
});

我想添加这两个条件:

  1. 当页面位于顶部时,我希望 MyFunction 仅在我向下滚动时才能使用
  2. 如果页面位于特定锚点,例如<a id="MyAnchor"> MyFunction 仅在我向上滚动时
  3. 甚至可能吗? 如果我不清楚,如果您需要更多解释,请告诉我,谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用scrollTop查看其是否滚动到页面顶部

if($('body').scrollTop() === 0)

Page是在某个锚点吗?它不清楚,你的意思是鼠标指针是否存在,或者项目在视口中是否可见?

在这种情况下,您可以查看

if(window.location.hash === "hash-of-your-div")

$(document).on('mousewheel DOMMouseScroll', function(MyFunction) {
    if(window.location.hash === "hash-of-your-div" || $('body').scrollTop() === 0){
        return false;
    }
    //normal code
});

但是如果在没有单击散列锚标记的情况下滚动元素,它将无法工作。 对于这种情况,您必须获取position元素的scrollTopbody的当前{{1}},并查看该项目是否在视口中。或者使用一些插件,我想有很多。

How to tell if a DOM element is visible in the current viewport?

答案 1 :(得分:0)

尝试使用一些标志变量来告诉您的程序该页面是什么。
加载页面时,您可以设置一个类似first=true的可靠项。然后在向下滚动时将其设置为false,并在页面滚动到顶部时将其设置为true。 与2相同。