2013-05-09 30 views
0

我有这种类型的问题。滚动事件有一些奇怪的行为

我有一个滚动事件,它检查我是否已到达页面的结尾,然后从服务器获取数据,并且该部分工作正常。

我的问题是,在旧电脑上,我遇到了滚动事件发生时加载的加载项的问题。

我应该怎么做,以使此代码的工作,因为它是更快的计算机上正常工作...

我试图delay()滚动事件,同样的事情中的代码发生...

代码:

$(window).scroll(function() 
{ 
    if($(window).scrollTop() + $(window).height() == $(document).height()) 
    { 
     $(".loader").show().delay(700).fadeOut(); 
     $.ajax({ ///more code }); 
    } 
}); 

回答

1
var loading = false; 
$(window).scroll(function() 
{ 
    if($(window).scrollTop() + $(window).height() == $(document).height()) 
    { 
     if(!loading){ 
     loading = true; 
     $(".loader").show().delay(700).fadeOut(); 
     $.ajax({ ///more code }) 
     .done(function(){ 
      loading = false; 
     }); 
     } 
    } 
}); 
+0

我在网站上多滚动...将这项工作? – 2013-05-09 21:25:45

+0

这应该可以。..你可以试试.. – 2013-05-09 21:27:47

+0

'.done()'我从没想过:)这太棒了!所以这只会在Ajax调用完成时触发,对吧? – 2013-05-09 21:32:51

0

你不应该使用这样的:

if($(window).scrollTop() + $(window).height() == $(document).height()) 

但这:

if($(window).scrollTop() + $(window).height() > $(document).height()) 

,并使用VAR的状态,并检查它

+0

为什么要使用'if($(window).scrollTop()+ $(window).height()> $(document).height())',我通常会触发页面的结尾 – 2013-05-09 21:24:44