如何在页面底部停止双javascript触发器[重复]

Posted

技术标签:

【中文标题】如何在页面底部停止双javascript触发器[重复]【英文标题】:how to stop double javascript trigger at the bottm of the page [duplicate] 【发布时间】:2013-02-17 05:19:03 【问题描述】:

如何防止网页底部出现这种双重触发。

当您从底部到达 100px 时,您会看到警报消息,但当您到达底部时,您也会看到它,即使您点击网页底部,我也只想看到一次。

这是链接:

double triggering

还有代码:

 $(window).scroll(function()    
   if($(window).scrollTop() + $(window).height() > $(document).height() - 100) 
       alert("bottom!");
   
);

编辑:

问题是我在网站上添加了多个 div,但我没有固定数量的 div,所以我需要检查我是否已经到达页面底部。

【问题讨论】:

提问前先搜索,这里有同样的问题***.com/questions/3898130/… 【参考方案1】:

您可以设置一个标志来控制此行为:

var alerted = false;
$(window).scroll(function () 
    if ($(window).scrollTop() + $(window).height() > $(document).height() - 100) 
        if (!alerted) 
            alert("bottom!");
            alerted = true;
        
    
    else alerted = false;
);

http://jsfiddle.net/gWD66/1117/

【讨论】:

问题已被编辑【参考方案2】:

一般的答案是在事件处理程序触发后简单地删除它。

不过,jQuery 可以通过其.one() 事件处理函数为您完成这项工作。

【讨论】:

在这个用例中使用.one 不起作用,因为通常需要多次调用滚动处理程序。【参考方案3】:

试试这个:

 var beenOnBottom = false;
 $(window).scroll(function()   

   if($(window).scrollTop() + $(window).height() > $(document).height() - 100) 
       if(!beenOnBottom)
       
           alert("bottom!");
           beenOnBottom = true;
       
   
);

如果你想在再次上升时显示消息,你可以在超过 100px 值时重置beenOnBottom 变量

【讨论】:

var beenOnBottom = false; 不应该在事件处理程序之外吗?否则,它将在每次滚动事件时重置。 问题已被编辑 @ethagnawl 你说得对。我改变了答案。

以上是关于如何在页面底部停止双javascript触发器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检测页面来自后退按钮的方法

页面加载中止上的 Javascript 事件

如何使用 javascript 计时来控制鼠标停止和鼠标移动事件

滚动到页面底部 100px 时,jQuery 加载内容,触发多个事件

Javascript事件 - 检测点击链接

如何使用javascript在特定页面上重定向