PaulIrishの無限スクロールプラグインに少し問題があります。結果が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">
< Previous
</a> |
<?php else: ?>
<span class="disabled">< 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 >
</a>
<?php else: ?>
<span id="next" class="disabled">Next ></span>
<?php endif; ?>
</div>
<?php endif; ?>
最後のページの次のページセレクターが無効になっているため、最後のページに到達すると停止することがわかりました。最後のページを何度もロードし続けるのはなぜですか?また、それが発生しないようにするにはどうすればよいですか?
編集:
この質問に触発されて、コールバック関数にifチェックを追加して、しばらくしてスクロールを停止しようとしました。jQueryInfiniteScrollプラグインは最後のページを何度もロードします。
//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がそれに到達するためでなければなりませんでした。関数エラーではなく、どうすればこれを取り除くことができますか?