이 문서의 예에서는 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 탭 페이지 효과에 대한 자세한 설명" 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) 뒤의 요소가 플로팅 요소를 둘러싸는 것을 원하지 않으면 플로팅 요소 뒤의 요소에 클리어 속성을 정의하여 이 효과를 지울 수 있습니다.
3. 현재 라벨과 콘텐츠 영역을 통합하려면 현재 라벨에 동일한 배경색과 동일한 색상 테두리를 사용하면 됩니다.
4. JQuery의 mouseover 및 mouseout 메소드는 표준 자바스크립트의 onmouseover 및 onmouseout 이벤트에 해당하며 마우스 입력 및 종료 이벤트를 처리할 수 있습니다.
5. 여러 요소가 포함된 JQuery 객체에 대해 각각의 메서드를 실행합니다. 각 메서드에 등록할 수 있는 함수의 내용은 각 요소별로 실행됩니다. 동시에 이 함수는 이 요소의 인덱스 값을 나타내는 매개변수를 받을 수도 있습니다. JQuery의 많은 메서드도 각각을 사용합니다
6. eq 메소드는 인덱스 값을 기반으로 JQuery 객체에 포함된 여러 요소 중 하나만 가져올 수 있으며 해당 요소에 해당하는 새 JQuery 객체를 반환합니다.
7. 선택기에서 $(“div:eq(1)”)와 같은 eq를 사용합니다
8. addClass 및 RemoveClass 메소드는 요소의 클래스 정의를 추가하고 제거하는 데 사용됩니다.
9. Javascript의 setTimeout 메소드는 특정 코드의 실행을 지연시킬 수 있으며 해당 ClearTimeout은 설정된 지연 작업을 지울 수 있습니다.
10. AJAX 애플리케이션을 만들 때 지금 FireFox에서 디버깅하는 것을 고려한 다음 다른 브라우저에서 확인하고 가능한 호환성 문제를 수정할 수 있습니다.
11. 커서 속성은 요소의 마우스 스타일을 제어할 수 있습니다. 포인터 속성 값은 일반적인 링크 마우스 스타일인 손 스타일을 나타냅니다.
12. 위치 속성은 요소의 위치를 제어할 수 있습니다. 값이 상대적인 경우 이는 원래 위치를 기준으로 위치를 지정하는 것을 의미합니다. 상, 좌, 하, 우의 값을 설정할 수 있습니다
원래 위치를 기준으로 요소의 이동을 제어합니다
13.z-index는 페이지에 있는 요소의 레이어 높이를 제어할 수 있으며, 값이 클수록 페이지 레이어에 더 높게 표시되며, Z-index 값이 낮은 일부 요소도 포함합니다. 위치 값이 상대 또는 절대인 요소에 대해서만 Z-인덱스가 적용됩니다.
14. JQuery의 로드 메소드는 지정된 정적 또는 동적 페이지 또는 서버 측 프로그램의 데이터 출력을 로드 메소드를 실행하는 JQuery 객체에 의해 래핑된 요소로 로드할 수 있습니다.
15. 로드 방법은 로드된 페이지 주소 뒤에 공백을 추가한 다음 선택기와 일치하는 페이지 부분을 로드하는 기능도 지원합니다.
16. 로드된 페이지는 UTF-8로 인코딩되어야 합니다. 그렇지 않으면 로드 후 중국어 문자가 깨집니다.
17.bind는 Javascript 이벤트나 JQuery에 정의된 이벤트를 지정된 노드에 바인딩하는 데 사용할 수 있습니다. JQuery에서 등록 메서드를 직접 제공하지 않는 이벤트의 경우 이 방법으로 등록할 수 있습니다. 메소드의 두 번째 매개변수는 이벤트 실행의 메소드 정의일 수 있습니다.
18.ajaxStart 및 ajaxStop은 ajax 상호작용 시작 및 종료 전후의 이벤트에 해당합니다. 이 두 이벤트를 노드에 등록한 후 현재 페이지에서 ajax 상호작용이 시작되고 종료되기 전후에 지정된 메소드가 실행됩니다.
이 기사가 jQuery 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.