Различное поведение для функции $ (window) .scroll при прокрутке страницы - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть веб-приложение, созданное с использованием Symfony 1.4 и Mysql DB.Я использую этот код, чтобы определить, прокрутил ли пользователь нижнюю часть страницы, отправить запрос, чтобы получить больше результатов, а затем добавить результат:

jQuery:

    <script type="text/javascript">
    var offset = 10;
    var noMore = true;
    $(document).ready(function(){
    //load more feeds on page scroll end
    $(window).scroll(function(){
      if($(window).scrollTop() == $(document).height() - $(window).height()){
        if($('.noFeeds').html()!='No feeds to show') // div shown when initially there are no feeds to show. In that case, we don't call the more feeds function
        {
          if($('#noMore').length) //check if the div that says there are no more feeds, exists or not
          {
           noMore = false; //if it does, set the flag to false so that the function to get more feeds is not called
          }
          if(noMore)
          {
            $('#loading').show();
            offset = offset+10;
            $.post("/user/getMoreFeeds?refferrer=home&offset="+offset+"&id="+<?php echo        $userId;?>, {
             }, function(response){
               $('#moreFeeds').append(response);
               $('#loading').hide();
            });
          }
        }
    }
  });
</script>

ВФункция getMorefeeds, я запускаю запрос, чтобы получить больше каналов, используя значение смещения, а затем отображать его в частичном.Частичное возвращается в качестве ответа.Код, выполняемый внутри партиала, выглядит примерно так:

PHP:

if(count($feeds)>0)
{
  // Show feeds
}
else
{
  <div id="noMore" class="activity_post" align="center" style="color:#A8A8A8;">No more   feeds to show</div>
}

Когда я медленно прокручиваю страницу вниз, я все получаю правильно, и в конце появляется сообщение «Нетбольше каналов, чтобы показать. "то есть отображается div с идентификатором «noMore».

Однако, если страница прокручивается быстро, я вижу, что div с идентификатором «noMore» добавляется дважды.Не могли бы вы помочь мне разобраться в этом поведении?

1 Ответ

0 голосов
/ 08 февраля 2012

попробуйте сделать это так

$(window).scroll(function(event){
  event.preventDefault(); #do sth });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...