无限滚动不是函数错误

时间:2012-07-22 14:15:41

标签: jquery jquery-plugins infinite-scroll

我在使用Paul Irish的无限滚动插件时遇到了一些麻烦。如果我只有1页的结果,它的效果非常好,但如果我有多页结果,它会一遍又一遍地重复最后一页。这是我的无限滚动配置:

$('#grid').infinitescroll({
navSelector  : "#paginationControl:first",
nextSelector : "#paginationControl a#next:first",
itemSelector : "#grid .entry",
debug : true,
bufferPx : 500
},
function(newElements){
//Apply masonry
var $newElems = $( newElements );
$newElems.imagesLoaded( function(){
    $("#grid").masonry( 'appended', $newElems );
});
    //See if this is the last page
if( curPage >= pages ){
    alert("Infinite scroll is paused.");
    $('#grid').infinitescroll('pause');
}
});

以下是我的分页控件:

<?php if ($this->pageCount): ?>
<div class="paginationControl" id="paginationControl">
<!-- Previous page link -->
<?php if (isset($this->previous)): ?>
    <a href="<?php echo $this->url(array('page' => $this->previous)); ?>" id="previous">
        &lt; Previous
    </a> |
<?php else: ?>
    <span class="disabled">&lt; Previous</span> |
<?php endif; ?>

<!-- Numbered page links -->
<div id="numberedPages">
<?php foreach ($this->pagesInRange as $page): ?>
    <?php if ($page != $this->current): ?>
        <a href="<?php echo $this->url(array('page' => $page)); ?>">
        <?php echo $page; ?>
        </a> |
    <?php else: ?>
        <?php echo $page; ?> |
    <?php endif; ?>
<?php endforeach; ?>
</div>
<!-- Next page link -->
<?php if (isset($this->next)): ?>
    <a id="next" href="<?php echo $this->url(array('page' => $this->next)); ?>" >
    Next &gt;
    </a>
<?php else: ?>
    <span id="next" class="disabled">Next &gt;</span>
<?php endif; ?>
</div>
<?php endif; ?>

我认为由于最后一页上的下一页选择器被禁用,它会在它到达最后一页时停止。为什么它会一遍又一遍地加载最后一页?我怎样才能阻止它发生?

编辑:

我在回调函数中添加了if检查以尝试在一段时间后停止滚动,受此问题的启发jQuery InfiniteScroll plugin loads the last page over and over

//See if this is the last page
if( curPage >= pages ){
    alert("Infinite scroll is paused.");
    $('#grid').infinitescroll('pause');
}

如果页面被定义为可用的最后一页而curPage是当前页面,则每次调用都会增加。检查在某一点上工作得很好,但我改变了一些东西,我不知道是什么,现在由于某种原因现在我收到了错误$("#grid").infinitescroll is not a function $('#grid').infinitescroll('pause');我不知道无限卷轴是不是一个函数在这一点,当它显然必须是javascript首先到达它。我怎样才能摆脱这不是函数错误?

1 个答案:

答案 0 :(得分:0)

如果您为zend的paginator提供一个不存在的页码,它只会检索最接近的有效页码。如果有20个有效页面,我试图检索第400个,那么它只会返回第20个。我在后端添加了代码以抛出404,现在就按时停止了。无限滚动脚本只是继续加载页面,直到后端抛出错误,因此它不知道它正在重复。

if($page_num > $pager->getPages()->pageCount){
        $this->_response->clearBody();
        $this->_response->clearHeaders();
        $this->_response->setHttpResponseCode(404);
    } 

我猜我的分页控件中禁用的下一页选择器没有阻止无限滚动脚本选择下一页,因为它只使用控件来找出页面url方案,然后简单地从那里增加数字