2012-02-08 6 views
0

Symfony 1.4とMysql DBを使用して構築されたWebアプリケーションがあります。私はより多くの結果を取得し、結果を追加するための要求を送信、ユーザーはページの一番下までスクロールしたかどうかを検出するために、このコードを使用しています:

の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> 
} 

「これ以上のフィードが表示されていないために、部分的内部で実行されるコードは次のようなものです"つまり、idが「noMore」のdivが表示されます。

しかし、ページをすばやくスクロールすると、ID「noMore」のdivが2回追加されていることがわかります。あなたはこの行動を理解するのを助けてくれますか?

+1

ようにそれをやろう。 Acceptedと回答をマークすると、問題が解決されたことが示されます。 –

+0

ああ!ごめんなさい。私はそれを知らなかった。私は[SOLVED]を追加すると助けになると思った。私は質問を編集します。 – gentrobot

答えて

0

が質問に `{解決しよう]`を追加しないでください。この

$(window).scroll(function(event){ 
    event.preventDefault(); #do sth }); 
+0

ありがとうMax!出来た :) – gentrobot

関連する問題