jQuery Mobile是一款非常強大的框架,用于開發(fā)Web應(yīng)用程序。其中一個非常有用的功能是下拉刷新。下拉刷新使得應(yīng)用程序在顯示新數(shù)據(jù)之前可以自動更新。這篇文章將介紹如何使用jQuery Mobile來實現(xiàn)下拉刷新。
$(document).on("pageinit", "#page", function() { $(document).on("scrollstop", function() { if ($(window).scrollTop() == $(document).height() - $(window).height()) { $("#list").listview("refresh"); } }); $(document).on("touchstart", function(e) { startX = e.originalEvent.touches[0].pageX; startY = e.originalEvent.touches[0].pageY; }); $(document).on("touchmove", function(e) { var curX = e.originalEvent.touches[0].pageX; var curY = e.originalEvent.touches[0].pageY; if (curY >startY) { var diffY = curY - startY; $("#header").css("top", Math.min(0, diffY / 2 - 30) + "px"); if (diffY >60) { $("#header").addClass("flip"); } else { $("#header").removeClass("flip"); } } }); $(document).on("touchend", function(e) { if ($("#header").hasClass("flip")) { $("#header").addClass("loading"); refreshData(); } $("#header").animate({ top: "-60px" }, 400); }); }); function refreshData() { setTimeout(function() { //獲取新的數(shù)據(jù) var newData = getNewData(); //將新數(shù)據(jù)添加到原有數(shù)據(jù)上 $("#list").append(newData); //刷新列表 $("#list").listview("refresh"); //重置下拉刷新樣式 $("#header").removeClass("loading"); $("#header").removeClass("flip"); }, 2000); }
代碼中,我們使用jQuery的on()函數(shù)來綁定事件。首先我們監(jiān)聽了pageinit事件,當頁面初始化完畢后,就會執(zhí)行綁定的函數(shù)。我們監(jiān)聽了scrollstop事件,當頁面滑動到底部的時候,就會刷新列表。
我們還監(jiān)聽了touchstart、touchmove、touchend事件。當用戶開始觸摸屏幕的時候,touchstart事件就會觸發(fā)。在touchmove事件中,我們計算了用戶在屏幕上的移動距離,并根據(jù)這個距離來控制下拉刷新的樣式。在touchend事件中,當用戶松開手指時,我們判斷下拉刷新是否達到了一定距離,如果是,就觸發(fā)refreshData()函數(shù)來獲取新的數(shù)據(jù)并更新列表。
最后,我們在refreshData()函數(shù)中使用setTimeout()函數(shù)來模擬獲取異步數(shù)據(jù)的過程。獲取到新的數(shù)據(jù)后,我們將新數(shù)據(jù)添加到原有數(shù)據(jù)上,并刷新列表。同時,我們重置下拉刷新的樣式。