jqueryに無限の巻物を実装します

Feb 22, 2025 am 10:04 AM

Implementing Infinite Scroll in jQuery

キーポイントの概要

概要

  • 無限のスクロール(Lazy LoadingまたはNo Pagingとも呼ばれます)は、ページ上の既存のコンテンツのスクロールを完了すると、AJAXを介して新しいコンテンツをロードするページングの代替品です。
  • 無限のスクロールには多くの利点がありますが、ストリーム内の場所を保存できず、検索エンジンフレンドリーではないなど、いくつかの欠点もあります。検索エンジンの問題を回避するには、ページングまたはサイトマップを備えた代替品を提供する必要があります。
  • Infiniteスクロールの実装には、基本的なHTMLおよびCSSレイアウトの作成、リクエストの処理用AJAXモードの設定、ページへの新しいデータの追加、および処理データの終了が含まれます。
  • ボタンを削除し、ユーザーがページの最後までスクロールし、JSONを介して生データを送信し、jQuery自体を使用してタグを作成し、メッセージを含めると関数を呼び出すことで、無限のスクロールの実装をさらに改善できます。 JSONの応答は、リクエストが正しく完了したかどうか、およびロードする投稿が増えるかどうかを説明します。

Web開発者は、表示されるコンテンツが多数ある場合、長い間従来のページングに頼りました。はい、ページネーションは依然としてコンテンツを表示するための非常に効果的な方法ですが、この記事では、代替の無限のスクロールについて説明します。この手法は、怠zyなロードまたはページネーションとも呼ばれ、ユーザーがページ上の既存のコンテンツのスクロールを完了すると、AJAXを介して新しいコンテンツをロードします。 FacebookやPinterestを含む一部のインターネット大手は、無制限のスクロールを使用しています。この記事では、無限のスクロール用の独自のjQueryプラグインの構築について説明します。

トレーダーとダウン 利点は明らかです。より多くのコンテンツを取得するには、新しいページにリダイレクトする必要はありません(これは、ページが読み込まれたときにさまざまな領域に注意をシフトする傾向があります)。 Infiniteスクロールを実装することにより、基本的にユーザーのページへの焦点を制御できます!無限のスクロールは、すべての場合に効果的ではありません。たとえば、ユーザーがリンクをクリックしてブラウザのバックボタンを使用すると、ユーザーはAjaxを介してロードされたデータストリームの場所を失います。この機能を実装するときに注意すべきことの1つは、新しいタブまたはウィンドウに新しいコンテンツをロードすることです。無限のスクロールの関連する欠点は、ストリーム内の場所を保存できないことです。無制限のスクロールページでコンテンツを電子メールで友達と共有したいとします。これは、URLが最初の場所に戻ってくるため、これを行うことはできません。したがって、使用を続ける前に、ウェブサイトの可用性を検討してください。また、無限のスクロールを実装する前に、それはあまり検索エンジンに優しいわけではないことを忘れないでください。検索エンジンの可視性に関する問題を回避するには、ページングまたはサイトマップを備えた代替案を提供してください。

start

非常にシンプルなページを作成することから始めます。以下は、HTMLおよびCSSの例の重要な部分を示しています。残りのファイルは、このチュートリアルの最後にあるデモリンクをクリックすることで表示できます。

html

css
<div id="data-container">
  <div class="data-item">
    Hi! I am the first item.
  </div>
  <div class="data-item">
    Hi! I am the second item.
  </div>
  <div class="data-item">
    Hi! I am the third item.
  </div>
  <div class="data-item">
    Ok, this is getting boring.
  </div>
  <div class="data-item">
    Let's try something new.
  </div>
  <div class="data-item">
    How about loading some more items through AJAX?
  </div>
  <div class="data-item">
    Click the button below to load more items.
  </div>
</div>
<div id="button-more" onclick="lazyload.load()">
  Load more items
</div>
<div id="loading-div">
  loading more items
</div>
ログイン後にコピー
ログイン後にコピー

#data-container {
  margin: 10px;
}

#data-container .data-item {
  background-color: #444444;
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  padding: 5px;
  margin: 5px;
  color: #fff;
}

#loading-div {
  display: none;
}

#button-more{
  cursor: pointer;
  margin: 0 auto;
  background-color: #aeaeae;
  color: #fff;
  width: 200px;
  height: 50px;
  line-height: 50px;
}
ログイン後にコピー
ログイン後にコピー
基本的なワークフロー

作成したドキュメントを表示する場合、[ロード]ボタンをクリックすると、新しい投稿をロ​​ードする必要があります。考慮すべき点がいくつかあります。

  • ページに添付される新しいアイテムを返すURLにリクエストを行う必要があります。
  • もう一度ボタンをクリックすると、このプロセスを繰り返す必要がありますが、2回目は新しい投稿を返す必要があります。
  • これ以上の投稿が表示されるまで、後続のリクエストごとに新しい投稿を提供する必要があります。
  • 残りの投稿がなくなると、ユーザーに終わりに達したことをユーザーに伝える必要があります。

ajaxモード

理想的には、ページ番号を保存するために変数を宣言する必要があります。これにより、リクエストを送信するURLが変更されます。デモには、2.html、3.html、および空の4.html(デモンストレーション目的)の3つのページがあります。ボタンをクリックしてより多くの投稿を読み込むと、リクエストが正常に完了し、新しいプロジェクトをロードするまでに時間がかかります。この場合、ロードボタンを非表示にし、新しいプロジェクトがロードされていることを示すテキストを表示します。

<div id="data-container">
  <div class="data-item">
    Hi! I am the first item.
  </div>
  <div class="data-item">
    Hi! I am the second item.
  </div>
  <div class="data-item">
    Hi! I am the third item.
  </div>
  <div class="data-item">
    Ok, this is getting boring.
  </div>
  <div class="data-item">
    Let's try something new.
  </div>
  <div class="data-item">
    How about loading some more items through AJAX?
  </div>
  <div class="data-item">
    Click the button below to load more items.
  </div>
</div>
<div id="button-more" onclick="lazyload.load()">
  Load more items
</div>
<div id="loading-div">
  loading more items
</div>
ログイン後にコピー
ログイン後にコピー

データをページに添付します

最初に、リクエストが作成されたときに実行した変更を元に戻す必要があります。つまり、ロードボタンをもう一度表示してテキストを非表示にします。次に、ページに既に存在するアイテムのリストに受け取った応答を追加する必要があります。デモでは、操作を簡素化するためにHTMLタグを直接受信することに注意してください。また、JSON応答を送信して、メッセージやステータスなどの変数を追加することもできます。追加のコードを以下に示します。

#data-container {
  margin: 10px;
}

#data-container .data-item {
  background-color: #444444;
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  padding: 5px;
  margin: 5px;
  color: #fff;
}

#loading-div {
  display: none;
}

#button-more{
  cursor: pointer;
  margin: 0 auto;
  background-color: #aeaeae;
  color: #fff;
  width: 200px;
  height: 50px;
  line-height: 50px;
}
ログイン後にコピー
ログイン後にコピー

処理データの終了

投稿の最後に到達したら、ページにロードする投稿がもうないことをユーザーに示す必要があります。これはさまざまな方法で実行できます。応答自体に組み込まれたコードまたはメッセージを介して州を送信できます。ただし、この場合はHTMLタグを直接使用するため、空の応答はストリームの終わりを表します。

$(buttonId).hide();
$(loadingId).show();
ログイン後にコピー

結論

私たちが提案したデモは、本質的に非常に基本的なものであり、もっと努力すればもっと良いことができます。まず、ボタンを完全に削除し、ユーザーがページの最後までスクロールしたときに関数を呼び出すことができます。これにより、ユーザーがボタンをクリックしてプロセス全体をより速くするための追加のステップが排除されます。第二に、JSONを介して生データを送信し、jQuery自体を使用してタグを作成することができます。たとえば、

$(buttonId).show();
$(loadingId).hide();
$(response).appendTo($(container));
page += 1;
ログイン後にコピー
最後に、JSON応答には、リクエストが正しく完了したというメッセージ、データ、およびロードする投稿が増えるかどうかを含めることができます。この場合、これは応答を送信するためのより効率的な方法です。無制限のスクロールの詳細については、この目的のために作成されたWebサイトにアクセスできます。これには、ウェブサイトで使用できるアイデアと既存のツールに関する一般的な情報が含まれています。ライブデモはGitHubページにあります。コードはGitHubでも利用できます。

(記事が長すぎて擬似オリジナルの目標と一致しないため、FAQパーツはここで省略されています。FAQパーツの内容は元のテキストと非常に偶然のものであり、擬似オリジナルは困難であり、変更後、それは記事と論理の完全性に影響します

以上がjqueryに無限の巻物を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptエンジン:実装の比較 JavaScriptエンジン:実装の比較 Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

JavaScript:Web言語の汎用性の調査 JavaScript:Web言語の汎用性の調査 Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

C/CからJavaScriptへ:すべてがどのように機能するか C/CからJavaScriptへ:すべてがどのように機能するか Apr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

See all articles