本文主要為大家詳細介紹了jQuery動態追加頁面資料以及事件委託的相關資料,具有一定的參考價值,有興趣的小夥伴們可以參考一下,希望能幫助到大家。
我們要執行的任務是頁面起初有一部分圖片,我們在底下有一個More Photos的鏈接,點擊後,向當前頁面後加載一部分圖片,再點擊該鏈接,繼續加載,直到將我們列出的頁面載入完成,此時該連結也消失了。
首先效果圖如下:
這個只截取了最底下的一部分頁面。在滑鼠懸停在圖片上時,還會有文字出現,滑鼠移出時文字消失。
我們現在要做的就是點擊底下的MorePhotos連結時,再載入一部分數據,然後再點擊在載入一部分數據,直到數據載入完畢。
首先body中程式碼如下:
<p id = "container"> <h1 id="nbsp-Photo-nbsp-Gallery"> Photo Gallery</h1> <p id = "gallery"> <p class = "photo"> <img src = "./images/1.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye ....</p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/2.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye.... </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/3.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye.... </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> //若干图片 </p> <p class = "link"><a id = "more-photos" href = "1.html"> More Photos >></a></p> </p>
然後在同一根目錄下寫幾個HTML程式碼片段,用於載入。
如,我這有一個1.html程式碼如下
<p class = "photo"> <img src = "./images/1.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/2.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/3.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/4.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/5.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p> <p class = "photo"> <img src = "./images/6.jpg" alt="jQuery動態追加頁面資料以及事件委託" > <p class = "details"> <p class = "description">The Cullin Mountains, Isle of skye </p> <p class = "date">12/24/2000</p> <p class = "photographer"> Alasdair Dougall</p> </p> </p>
在這個HTML片段中我介紹了6張圖片。其他的片段如2.html等等都可以仿照上面的這個來寫。在定義好了許多個HTML片段後,利用jQuery進行動態追加資料。
首先引入一個jquery函式庫http://libs.baidu.com/jquery/1.9.0/jquery.js
##
<script> $(document).ready(function(){ //首先定义一个变量来记录当前是多少页 var pageNum = 1; //给链接添加点击事件 $("#more-photos").click(function(event){ event.preventDefault(); var $link = $(this); //获得当前所点链接的url var url = $link.attr('href'); //如果该链接的url存在,进行页面追加 if(url){ $.get(url, function(data){ $("#gallery").append(data); }); pageNum ++; //总共有十个片段要追加,名称分别为1.html,2.html ...10.html 当当前页面的总数小于总数时,进行链接更新。 if(pageNum < 10){ $link.attr('href', './'+pageNum+'.html'); } //当将所有片段追加完成后,移除链接。 else{ $link.remove(); } } }) });以上的程式碼就可以進行動態的向頁面追加資料了。 但在Google的瀏覽器中會出現以下的錯誤:
jquery.js:8475 XMLHttpRequest cannot load file:///C:/Users/%E9%95 %BF%E5%AD%99%E4%B8%B9%E5%87%A4/Desktop/webtest/1.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, httpsported for protocol schemes: http, data, chrome, chrome-extension, https .
在IE10的環境下進行測試的,沒問題。解決方案就是裝一個web伺服器,然後將檔案拷到專案中,以web伺服器中的路徑訪問,就沒有問題啦!形如http://localhost:8080/ajax/ajaxLoad.html
#由於還有滑鼠懸浮事件,當我們將滑鼠懸浮在某個圖片上時,就會出現文字,移出時,圖片上的文字消失。$(document).ready(function(){ $('p .photo').hover(function(){ $(this).find('.details').fadeTo('slow', 0.7); },function(){ $(this).find('.details').fadeOut('slow'); }) });或可以將上面的程式碼組合起來減少冗餘程式碼:
$(document).ready(function(){ $('p.photo').on('mouseenter mouseleave', function(event){ var $details = $(this).find('.details'); if(event.type == 'mouseenter'){ $details.fadeTo('slow', 0.7); //0.7代表的是透明度 } else{ $details.fadeOut('slow'); } }) });當我們使用上面的當兩種程式碼為每個圖片添加滑鼠懸浮事件時,只有最初頁面上的那些圖片才會被綁定事件,而經過動態載入的圖片上卻沒能綁定上事件。因為事件處理程序只會加入到呼叫方法時已經存在的元素上,像是透過這種動態追加的元素,不會綁定那些事件。
2. 一開始就把事件綁定在存在的元素上,依賴事件冒泡。
$(document).ready(function(){ $('#gallery').on('mouseenter mouseleave', 'p.photo', function(event){ var $details = $(this).find('.details'); if(event.type == 'mouseenter'){ $details.fadeTo('slow', 0.7); } else{ $details.fadeOut('slow'); } }) })$('#gallery').on('mouseenter mouseleave', 'p.photo ', function(event)中,在將'p.photo'作為第二個參數的情況下,.on()方法會把this映射到gallery中與該選擇符匹配的元素。指向gallery中的p class= 'photo'的元素。
##或許在你不知道要新增的頁面屬於哪個父級元素的話,可以將$('#gallery').on( )中的'#gallery'替換成document。容器。祖先元素會有較大的效能損失。定事件處理程序。到document不用等到完整的DOM建置結束。 = 'photo'>元素只要呈現在頁面上,就可以應用mouseenter 和mouseleave行為。
##
(function($){ $(document).on('mouseenter mouseleave', 'p.photo', function(event){ var $details = $(this).find('.details'); if(event.type == 'mouseenter'){ $details.fadeTo('slow', 0.7); } else{ $details.fadeOut('slow'); } }) })(jQuery);相關推薦:
#詳解PHP設計模式之委託模式
JavaScript中關於事件委託的原生JS以及jQuery實例程式碼分享
#以上是jQuery動態追加頁面資料以及事件委託的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

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