У меня есть веб-приложение, созданное с использованием 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» добавляется дважды.Не могли бы вы помочь мне разобраться в этом поведении?