如何防止此函数在x毫秒内执行2次以上?

时间:2011-03-28 03:21:57

标签: javascript jquery double-submit-prevention

当我到达滚动的底部时,我怎么能防止这个被执行两次?

 if  ($(window).scrollTop() == $(document).height() - $(window).height()){
                   last_msg_funtion();
 }

我看到的选项:

我尝试设置var loading_already == false,喜欢

if(loading_already==false){
     loading_already = true;
     last_msg_function();
     setTimeout('refresh_loading',300);
}

,其中

function refresh_loading(){ loading_already = false; }

但没有成功,对此有何建议?

谢谢!

2 个答案:

答案 0 :(得分:2)

loading_already = true;

你有==布尔是运算符,而不是赋值。

答案 1 :(得分:1)

你应该使用真棒jQuery throttle/debounce plugin。使这种事情变得非常容易。

以下示例将确保每250毫秒调用las_msg_function不超过一次(假设滚动检测表达式正确);

if ($(window).scrollTop() == $(document).height() - $(window).height()) {
  $.throttle(250, las_msg_function);
}

这里是an example page,它显示了如何与滚动检测结合使用(见第二个例子)