1

動的データで無限スクロールを使用していますが、ページ 2 を通過できないようです...

ページが最初に読み込まれるとき、URL にオフセットがあるため、0 から開始します。

test2.html?offset=0

これは日付をロードするコードです

$offset = $_GET['offset'];

$data = mysql_query("select * from list limit 30 offset $offset;",$db);         

echo '<div id="wall" class="transitions-enabled infinite-scroll clearfix">';

while ($databack33 = mysql_fetch_array($data)){

echo '<div class="block">';

echo '<a href=#><img src="'.$databack33[item_pic_url].'"></a>';

echo '</div>';

}

次に、使用する次のページをロードします。

<nav id="page-nav">

<? $offset = $offset+30; ?>

<a href="test2.html?offset=<?=$offset?>"></a>

</nav>

これはページ 1 と 2 では問題なく機能しますが、データはまだあるのにロードするページがこれ以上ないことがわかります。

ページのソースを見れば正しいtest2.html?offset=60

これは石積み/無限スクロールのセットアップです

<script type="text/javascript">
$(function(){

var $container = $('#wall');

$container.imagesLoaded(function(){
  $container.masonry({
    itemSelector: '.block',
    isAnimated: true,
    animationOptions: {
        duration: 750,
        easing: 'linear',
        queue: false
      }
  });
});

$container.infinitescroll({
  navSelector  : '#page-nav',    // selector for the paged navigation 
  nextSelector : '#page-nav a',  // selector for the NEXT link (to page 2)
  itemSelector : '.block',     // selector for all items you'll retrieve
  loading: {
      finishedMsg: 'No more pages to load.',
      img: 'http://i.imgur.com/6RMhx.gif'
    }
  },
  // trigger Masonry as a callback
  function( newElements ) {
    // hide new items while they are loading
    var $newElems = $( newElements ).css({ opacity: 0 });
    // ensure that images load before adding to masonry layout
    $newElems.imagesLoaded(function(){
      // show elems now they're ready
      $newElems.animate({ opacity: 1 });
      $container.masonry( 'appended', $newElems, true ); 
    });
  }
);

  });
</script>
4

1 に答える 1

1

「offset =」ページネーションで無限スクロールを機能させるために、次のことを行いました。

現在の「次のページ」の URL を保存し、オフセット値を取得します。

var nextSelector = '#page-nav a';
var origNextUrl = $(nextSelector).attr('href');
var offsetRegex = /(offset=)([0-9]+)/;
var offset = origNextUrl.match(offsetRegex)[2];

次に、無限スクロールで、ページ番号を受け入れ、次のページをロードするために使用される URL を返す「パス」オプションに関数を割り当てます。

$container.infinitescroll({
    // other options
    path: function(pageNum) {
        return origNextUrl.replace( offsetRegex, ("$1" + (offset * pageNum)) );
    },
    //callback
 });
于 2013-05-27T20:33:04.150 に答える