本文實例講述了JQuery標籤頁效果實作方法。分享給大家參考,具體如下:
第一個標籤頁中滑鼠滑過顯示不同的標籤頁,第二個標籤頁中點選不同標籤載入其他頁面中的內容,載入等待的圖片會緩慢隱藏,效果圖如下:
/WebRoot/4.Tab.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>JQuery实例4:标签页效果</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link type="text/css" rel="stylesheet" href="css/tab.css" /> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/tab.js"></script> </head> <body> <ul id="tabfirst"> <li class="tabin">标签1</li> <li>标签2</li> <li>标签3</li> </ul> <div class="contentin contentfirst">我是内容1</div> <div class="contentfirst">我是内容2</div> <div class="contentfirst">我是内容3</div> <br /> <br /> <br /> <ul id="tabsecond"> <li class="tabin">装入完整页面</li> <li>装入部分页面</li> <li>从远程获取数据</li> </ul> <div id="contentsecond"> <img alt="JQuery標籤頁效果實例詳解_jquery" src="images/img-loading.gif" /> <div id="realcontent"></div> </div> </body> </html>
/WebRoot/js/tab.js:
var timoutid; $(document).ready(function(){ //找到所有的标签 /* $("li").mouseover(function(){ //将原来显示的内容区域进行隐藏 $("div.contentin").hide(); //当前标签所对应的内容区域显示出来 }); */ $("#tabfirst li").each(function(index){ //每一个包装li的jquery对象都会执行function中的代码 //index是当前执行这个function代码的li对应在所有li组成的数组中的索引值 //有了index的值之后,就可以找到当前标签对应的内容区域 $(this).mouseover(function(){ var liNode = $(this); timoutid = setTimeout(function(){ //将原来显示的内容区域进行隐藏 $("div.contentin").removeClass("contentin"); //对有tabin的class定义的li清除tabin的class $("#tabfirst li.tabin").removeClass("tabin"); //当前标签所对应的内容区域显示出来 //$("div").eq(index).addClass("contentin"); $("div.contentfirst:eq(" + index + ")").addClass("contentin"); liNode.addClass("tabin"); },300); }).mouseout(function(){ clearTimeout(timoutid); }); }); //在整个页面装入完成后,标签效果2的内容区域需要装入静态的html页面内容 $("#realcontent").load("TabLoad.html"); //找到标签2效果对应的三个标签,注册鼠标点击事件 $("#tabsecond li").each(function(index){ $(this).click(function(){ $("#tabsecond li.tabin").removeClass("tabin"); $(this).addClass("tabin"); if (index == 0) { //装入静态完成页面 $("#realcontent").load("TabLoad.html"); } else if (index == 1) { //装入动态部分页面 $("#realcontent").load("TabLoad.jsph2"); } else if (index == 2) { //装入远程数据(这里也是一个动态页面输出的数据) //$("#realcontent").load("TabData.jsp"); $("#realcontent").load("TabLoad.jsp"); } }); }); //对于loading图片绑定ajax请求开始和交互结束的事件 $("#contentsecond img").bind("ajaxStart",function(){ //把div里面的内容清空 $("#realcontent").html(""); //整个页面中任意ajax交互开始前,function中的内容会被执行 $(this).show(); }).bind("ajaxStop",function(){ //整个页面中任意ajax交互结束后,function中的内容会被执行 $(this).slideUp(5000); }); });
/WebRoot/css/tab.css:
ul,li { margin: 0; padding: 0; list-style: none; } #tabfirst li { float: left; background-color: #868686; color: white; padding: 5px; margin-right: 2px; border: 1px solid white; } #tabfirst li.tabin { background-color: #6E6E6E; border: 1px solid #6E6E6E; } div.contentfirst { clear: left; background-color: #6E6E6E; color: white; width: 300px; height: 100px; padding: 10px; display: none; } div.contentin { display: block; } #tabsecond li { float: left; background-color: white; color: blue; padding: 5px; margin-right: 2px; cursor: pointer; } #tabsecond li.tabin { background-color: #F2F6FB; border: 1px solid black; border-bottom: 0; z-index: 100; position: relative; } #contentsecond { width: 500px; height: 200px; padding: 10px; background-color: #F2F6FB; clear: left; border: 1px solid black; position: relative; top: -1px; } img { display: none; }
/WebRoot/TabLoad.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>这是一个静态页面</title> </head> <body> 载入静态页面的内容。<br> 载入静态页面的内容。<br> 载入静态页面的内容。<br> 载入静态页面的内容。<br> 载入静态页面的内容。<br> 载入静态页面的内容。<br> </body> </html>
/WebRoot/TabLoad.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>动态页面</title> </head> <body> <h2> <%=new Date() %><br> 1.这是一个动态页面的一部分<br> 2.这是一个动态页面的一部分<br> 3.这是一个动态页面的一部分<br> </h2> 这部分不显示<br> </body> </html>
本節學到的JQuery及其他開發知識:
1.一組標籤用一個ul來管理,每個標籤是ul中的一個li;標籤下面的內容就是用div來管理
2.跟在浮動元素(float)之後的元素會圍繞著浮動元素,如果不希望有這種圍繞,可以在浮動元素之後的那個元素上定義clear屬性,來清除這種效果。
3.實現當前標籤和內容區域的融合,可以透過使用相同的背景色,外加當前標籤使用同顏色的邊框來實現。
4.JQuery中的mouseover,mouseout方法對應標準javascript的onmouseover,onmouseout事件,可以處理滑鼠進入和離開的事件。
5.在一個包含了多個元素的JQuery物件上執行each方法,可以註冊給each方法的那個function的內容被每一個元素執行。同時這個function還可以接收到一個參數,表示這個元素的索引值。 JQuery中的很多方法也用到了each
6.eq方法可以根據索引值只得到JQuery物件中包含的多個元素中的某一個元素,並且仍然傳回元素對應的新JQuery物件。
7.選擇器中使用eq,例如$(“div:eq(1)”)
8.addClass和removeClass方法用來新增和移除元素的class定義。
9.Javascript中的setTimeout方法可以延時執行某些程式碼,對應的clearTimeout可以清除設定的延遲操作。
10.做一個AJAX應用程式的時候,可以考慮現在FireFox上調試通過,然後再到其他瀏覽器中進行檢查,並修正可能的兼容性問題。
11.cursor屬性可以控制元素上的滑鼠樣式,pointer的屬性值表示手型樣式,也就是我們常見的連結滑鼠樣式
12.position屬性可以控制元素定位的方式,值為relative時表示相對原來的位置進行定位。可以透過設定top,left,bottom,right的值來
控制元素相對原來的位置進行移動
13.z-index可以控制元素在頁面中的層高,值越大就會在頁面的層越靠前,也會覆蓋住一些z-index值較低的元素。只有position的值為relative或absolute的元素,z-index才會生效。
14.JQuery中的load方法十分強大,可以把一個指定的靜態,動態頁面或伺服器端程式輸出的資料裝入到執行load方法的JQuery物件包裝的元素中。
15.load方法也支援部分裝載,在裝入的頁面位址後面加空格,然後使用選擇器,就可以把頁面中符合選擇器的部分裝進去。
16.被load的頁面一定要是UTF-8編碼的,否則裝入後中文會出現亂碼。
17.bind可以用來給指定的節點綁定Javascript的事件或JQuery中定義的事件。對於JQuery中沒有直接提供註冊方法的事件,可以用這種方式註冊。方法的第二個參數可以是事件執行的方法定義。
18.ajaxStart,ajaxStop對應ajax互動開始前和結束後的事件,給某一個節點註冊了這兩個事件後,當前頁面的ajax交互開始前和結束後,就會執行指定的方法。
希望本文所述對大家jQuery程式設計有所幫助。