本文實例講述了jquery分頁優化操作。分享給大家供大家參考,具體如下:
前言
上次寫了博客 jquery分頁顯示,文章的jquery分頁方式雖然可以通過js實現分頁,但是也存在明顯的弊端。
該篇文章的思路是,每次通過ajax請求獲取到記錄,然后通過判斷當前頁面,顯示或者隱藏記錄,以實現分頁效果。但是這種方式,每次切換分頁都需要從新請求一次記錄,頻繁的查詢數據庫。
下面提供一種,只需要加載一次(查詢一次數據庫)就能實現分頁的思路。我們加載記錄之后,生成所有的分頁并隱藏,然后默認顯示第一頁。切換分頁通過,分頁div的顯示和隱藏來實現。
創建數據庫語句
CREATE TABLE `news` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8
記錄查詢頁面
test.php
<?phpheader("Content-Type:text/html;Charset=utf-8");$mysqli = new mysqli("localhost","root","","test");$mysqli->set_charset("utf8");$query = $mysqli->query("SELECT * FROM news");$res = $query->fetch_all(MYSQLI_ASSOC);echo json_encode($res);
分頁顯示頁面
index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .page{ width: 1000px; margin-left: auto; margin-right: auto; text-align:center; display:none; } </style></head><body> <div id="listTag"> </div></body><script type="text/javascript" src="http://localhost/jquery/jquery.js"></script><script type="text/javascript"> $(function(){ var avgNum = 18; //每頁顯示18條記錄 $.ajax({ type:"GET", url:"http://localhost/test.php", dataType:"json", success:function(data){ var totalPage = data.length; //獲取總的記錄數 var pageNum = Math.ceil(totalPage/avgNum); //計算得到頁數 var content = ''; for(var i=1;i<=pageNum;i++){ content += '<div id="page'+i+'" class="page"><ul>'; for(var j=((i-1)*avgNum);j<(i*avgNum)&&j<totalPage;j++){ content += '<li>'+data[j].title+'</li>'; } content += '</ul>'; content += '<hr/><div>'; //前一頁 if(i == 1){ content += '<<  '; }else{ content += '<a href="javascript:showPage('+(i-1)+')" rel="external nofollow" rel="external nofollow" ><<</a>  '; } //后一頁 if(i == pageNum){ content += '>>  '; }else{ content += '<a href="javascript:showPage('+(i+1)+')" rel="external nofollow" rel="external nofollow" >>></a>  '; } content += '</div></div>'; } //生成所有的div,并隱藏 $("#listTag").append(content); showPage(1); } }); }); function showPage(num){ $("#page"+num).show(); $("#page"+num).siblings().hide(); }</script></html>
分頁效果:
分頁樣式二
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .page{ width: 1000px; margin-left: auto; margin-right: auto; text-align:center; display:none; } .active{ color:red; } </style></head><body> <div id="listTag"> </div></body><script type="text/javascript" src="http://localhost/jquery/jquery.js"></script><script type="text/javascript"> $(function(){ var avgNum = 18; //每頁顯示18條記錄 $.ajax({ type:"GET", url:"http://localhost/test.php", dataType:"json", success:function(data){ var totalPage = data.length; //獲取總的記錄數 var pageNum = Math.ceil(totalPage/avgNum); //計算得到頁數 var content = ''; for(var i=1;i<=pageNum;i++){ content += '<div id="page'+i+'" class="page"><ul>'; for(var j=((i-1)*avgNum);j<(i*avgNum)&&j<totalPage;j++){ content += '<li>'+data[j].title+'</li>'; } content += '</ul>'; content += '<hr/><div>'; //前一頁 if(i == 1){ content += '<<  '; }else{ content += '<a href="javascript:showPage('+(i-1)+')" rel="external nofollow" rel="external nofollow" ><<</a>  '; } //顯示所有的頁碼 for(var p=1;p<=pageNum;p++){ content += '<a href="javascript:showPage('+p+')" rel="external nofollow" class="p'+p+'">'+p+'</a>  '; } //后一頁 if(i == pageNum){ content += '>>  '; }else{ content += '<a href="javascript:showPage('+(i+1)+')" rel="external nofollow" rel="external nofollow" >>></a>  '; } content += '</div></div>'; } //生成所有的div,并隱藏 $("#listTag").append(content); showPage(1); } }); }); function showPage(num){ $("#page"+num).show(); $("#page"+num).siblings().hide(); $(".p"+num).addClass("active"); $(".p"+num).siblings().removeClass("active"); }</script></html>
顯示效果
更多關于jQuery相關內容感興趣的讀者可查看本站專題:《jQuery擴展技巧總結》、《jQuery表格(table)操作技巧匯總》、《jQuery常見經典特效匯總》、《jquery選擇器用法總結》及《jQuery常用插件及用法總結》
希望本文所述對大家jQuery程序設計有所幫助。
新聞熱點
疑難解答