>웹 프론트엔드 >JS 튜토리얼 >JQuery 탭 페이지 효과에 대한 자세한 설명

JQuery 탭 페이지 효과에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:23:411408검색

이 문서의 예에서는 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 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.