国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 在jQuery中實施無限滾動

在jQuery中實施無限滾動

Feb 22, 2025 am 10:04 AM

Implementing Infinite Scroll in jQuery

要點總結(jié)

  • 無限滾動(也稱為懶加載或無分頁)是分頁的替代方案,當用戶完成頁面現(xiàn)有內(nèi)容的滾動時,它通過 Ajax 加載新內(nèi)容。
  • 儘管無限滾動有很多優(yōu)點,但它也有一些缺點,例如無法保存流中的位置,並且對搜索引擎不太友好。為了避免搜索引擎出現(xiàn)問題,應(yīng)提供帶有分頁或網(wǎng)站地圖的替代方案。
  • 實現(xiàn)無限滾動包括創(chuàng)建基本的 HTML 和 CSS 佈局,設(shè)置處理請求的 Ajax 模式,將新數(shù)據(jù)附加到頁面,以及處理數(shù)據(jù)結(jié)束。
  • 可以通過以下方法進一步改進無限滾動的實現(xiàn):刪除按鈕並在用戶向下滾動到頁面末尾時調(diào)用函數(shù),通過JSON 發(fā)送原始數(shù)據(jù)並使用jQuery 本身創(chuàng)建標記,以及在JSON 響應(yīng)中包含一條消息,說明請求是否正確完成以及是否有更多帖子要加載。

長期以來,當有很多內(nèi)容要顯示時,Web 開發(fā)人員一直求助於傳統(tǒng)的分頁。沒錯,分頁仍然是一種非常有效的顯示內(nèi)容的方式,但在本文中,我們將討論一種替代方案——無限滾動。這種技術(shù)也稱為懶加載或無分頁,當用戶完成頁面現(xiàn)有內(nèi)容的滾動時,它通過 Ajax 加載新內(nèi)容。包括 Facebook 和 Pinterest 在內(nèi)的一些互聯(lián)網(wǎng)巨頭都在使用無限滾動。在本文中,我們將討論構(gòu)建您自己的 jQuery 插件以實現(xiàn)無限滾動。

權(quán)衡

優(yōu)點是顯而易見的。要獲取更多內(nèi)容,您無需重定向到新頁面(在頁面加載時,這往往會將您的注意力轉(zhuǎn)移到不同的區(qū)域)。通過實現(xiàn)無限滾動,您基本上可以控制用戶在頁面上的焦點!無限滾動並非在所有情況下都有效。例如,如果用戶單擊鏈接然後使用瀏覽器的“後退”按鈕,則用戶會丟失通過 Ajax 加載的數(shù)據(jù)流中的位置。實施此功能時應(yīng)注意的一點是在新標籤頁或窗口中加載新內(nèi)容。無限滾動的相關(guān)缺點是它無法保存流中的位置。假設(shè)您想通過電子郵件與朋友分享無限滾動頁面上的內(nèi)容。您無法這樣做,因為 URL 會將您帶回到初始位置。因此,在您決定繼續(xù)使用它之前,請考慮一下您網(wǎng)站的可用性。此外,在實現(xiàn)無限滾動之前,請記住它對搜索引擎不太友好。為了避免搜索引擎可見性方面出現(xiàn)任何問題,請確保您提供帶有分頁或網(wǎng)站地圖的替代方案。

開始

我們將從創(chuàng)建一個非常簡單的頁面開始。下面顯示了示例 HTML 和 CSS 的重要部分??梢酝ㄟ^單擊本教程末尾的演示鏈接來查看其余文件。

HTML

<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>

CSS

#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;
}

基本工作流程

如果您查看我們創(chuàng)建的文檔,則單擊“加載更多”按鈕時應(yīng)加載新帖子。以下是一些需要考慮的幾點。

  • 需要向返回要附加到頁面的新項目的 URL 發(fā)出請求。
  • 如果再次單擊該按鈕,此過程應(yīng)重複,但第二次應(yīng)返回較新的帖子。
  • 每次後續(xù)請求都應(yīng)提供新帖子,直到?jīng)]有更多帖子要顯示為止。
  • 當沒有更多帖子剩餘時,您應(yīng)該告訴用戶他已經(jīng)到達了結(jié)尾。

Ajax 模式

理想情況下,您必須聲明一個變量來存儲頁碼,這反過來會更改要向其發(fā)送請求的 URL。在我們的演示中,我們有三個這樣的頁面——2.html、3.html 和一個空 4.html(用於演示目的)。當您單擊按鈕以加載更多帖子時,請求成功完成並加載新項目之前需要一些時間。在這種情況下,我們將隱藏加載按鈕,並顯示一些文本,說明正在加載新項目:

<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>

將數(shù)據(jù)附加到頁面

首先,我們需要撤消我們在請求進行時執(zhí)行的更改,即再次顯示“加載更多”按鈕並隱藏文本。其次,我們需要將我們收到的響應(yīng)附加到頁面上已存在的項目列表中。請注意,在演示中,我們直接接收 HTML 標記以簡化操作。您也可以發(fā)送 JSON 響應(yīng),添加更多變量,例如消息或狀態(tài)。附加代碼如下所示。

#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;
}

處理數(shù)據(jù)結(jié)束

一旦到達帖子的結(jié)尾,您需要向用戶顯示沒有更多帖子要加載到頁面上。這可以通過多種方式完成。我們可以通過嵌入在響應(yīng)本身中的代碼或消息來發(fā)送狀態(tài)。但是,由於我們在本例中直接使用 HTML 標記,因此空響應(yīng)表示流的結(jié)尾。

$(buttonId).hide();
$(loadingId).show();

結(jié)論

我們提出的演示本質(zhì)上非常基礎(chǔ),如果我們付出更多努力,我們可以做得更好。首先,我們可以完全刪除按鈕,並在用戶向下滾動到頁面末尾時調(diào)用該函數(shù)。這將消除用戶單擊按鈕的額外步驟,並使整個過程更快。其次,我們可以只通過 JSON 發(fā)送原始數(shù)據(jù),並使用 jQuery 本身創(chuàng)建標記。例如:

$(buttonId).show();
$(loadingId).hide();
$(response).appendTo($(container));
page += 1;

最後,JSON 響應(yīng)可以包含一條消息,說明請求是否正確完成、數(shù)據(jù)以及是否有更多帖子要加載。在這種情況下,這是發(fā)送響應(yīng)的更有效方法。有關(guān)無限滾動的更多信息,您可以訪問專門為此目的而創(chuàng)建的網(wǎng)站。它包含有關(guān)該想法以及您可以在網(wǎng)站中使用以實現(xiàn)它的現(xiàn)有工具的一般信息。可以在 GitHub 頁面上找到實時演示。代碼也可在 GitHub 上找到。

(此處省略了FAQ部分,因為篇幅過長,且與偽原創(chuàng)目標不符。FAQ部分內(nèi)容與原文高度重合,偽原創(chuàng)難度較大,且修改後會影響文章的完整性和邏輯性。)

以上是在jQuery中實施無限滾動的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

掌握JavaScript評論:綜合指南 掌握JavaScript評論:綜合指南 Jun 14, 2025 am 12:11 AM

評論arecrucialinjavascriptformaintainingclarityclarityandfosteringCollaboration.1)heelpindebugging,登機,andOnderStandingCodeeVolution.2)使用林格forquickexexplanations andmentmentsmmentsmmentsmments andmmentsfordeffordEffordEffordEffordEffordEffordEffordEffordEddeScriptions.3)bestcractices.3)bestcracticesincracticesinclud

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

為什麼要將標籤放在的底部? 為什麼要將標籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

Java和JavaScript有什麼區(qū)別? Java和JavaScript有什麼區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。 1.Java是靜態(tài)類型、編譯型語言,適用於企業(yè)應(yīng)用和大型系統(tǒng)。 2.JavaScript是動態(tài)類型、解釋型語言,主要用於網(wǎng)頁交互和前端開發(fā)。

See all articles