Jscrollを使った無限スクロールを通常の下に表示ではなく、
上にスクロールした際にページ最上部に表示されるようにしたいと思っています。
試したこと
1ページ目はこのような感じで記述しています。
【index.html】 <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jscroll/2.4.1/jquery.jscroll.min.js"></script> <script> $(function(){ $('.scroll').jscroll({ nextSelector: 'a.next' }); }); </script> <script type="text/javaScript"> function Jump() { location.href = "#new"; } </script> <div class="content"> <section> <div class="scroll"> <a class="next" href="index2.html">次へ</a> <div class="box"> 5つめ </div> <div class="box"> 4つめ </div> <div class="box"> 3つめ </div> <div class="box"> 2つめ </div> <div class="box"> <a name="new"></a> 最新 </div> </div> </section> </div>
上記のままだと従来の下にスクロールをして下に続きを表示させる事は出来ているのですが、
Qiitaに記載されているような上に表示をさせる事がどうしてもできませんでした。
やりたい事としては、
①上部へスクロールして2ページ目の読み込みが発動できるようにする
②上スクロール後に2ページ目の読み込み時にAjaxを実行して2ページ目のデータを取得する
③2ページ目のデータを、やり取りデータ表示している.boxに対してprepend指定し、.scrollの最初に表示させる
上記に伴い、このように記述を行いましたが、上スクロールに対応せず変わらず下スクロールでの表示でした。
<script> $(document).on("turbolinks:load", function() { var i = 2; $(".content").scrollTop(1); $(".content").scroll(function() { if (($(".content").scrollTop() == 0) && (i <= parseInt($(".message_view").find("a.next").prop("search").match(/[0-9]/), 10))){ $.ajax({ url: $(".message_view").find("a.next").prop("search").replace(/[0-9]/, i) }).done(function(data) { $(".scroll").prepend($(data).find(".scroll").html()); $(".content").scrollTop($(".content").first().height()); i++; }) } }) } }) </script> ※.message_viewはindex2.htmlに記述しています。
記述内容が誤っている事は重々承知なのですが、かなりドツボにはまっている状態でして、お知恵をお借りできたら助かります。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/14 06:14
2021/07/14 06:19
2021/07/14 06:48
2021/07/14 07:04 編集