1. 程式人生 > >js,jq選項卡實現方式

js,jq選項卡實現方式

js選項卡的實現方法:

先寫好一個html css的頁面樣式

html css部分

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>選項卡</title>
	</head>
<style type="text/css">
		* {
			padding: 0;
			margin: 0;
			list-style: none;
		}
		
		.box {
			width: 50%;
			margin: 0 auto;
		}
		
		.nav {
			width: 100%;
		}
		
		.nav li {
			width: 25%;
			float: left;
			text-align: center;
			border: 1px solid #000;
			box-sizing: border-box;
			border-right: none;
			line-height: 2;
			cursor: pointer;
		}
		
		.nav li:last-child {
			border-right: 1px solid #000;
		}
		
		.nav li.checked {
			border-bottom: 1px solid #ddd;
			background: #ddd;
		}
		
		.subnav {
			border: 1px solid #000;
			border-top: none;
			background: #ddd;
		}
		
		.subnav li {
			width: 100%;
			text-align: center;
			height: 100px;
			line-height: 100px;
			display: none;
		}
		
		.subnav li:first-child {
			display: block;
		}
		
		.clearfix:after {
			content: " ";
			display: block;
			clear: both;
		}
	</style>

	<body>
		<div class="box">
			<ul class="nav clearfix">
				<li class="checked">選項一</li>
				<li>選項二</li>
				<li>選項三</li>
				<li>選項四</li>
			</ul>
			<ul class="subnav">
				<li>我是選項一</li>
				<li>我是選項二</li>
				<li>我是選項三</li>
				<li>我是選項四</li>
			</ul>
		</div>
	</body>
	<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

</html>

下面用js和jq分別寫出來 

		//js的方法
		window.onload=function(){
		//找物件的方法很多 我這裡用的是比較原始的 可以根據個人愛好自行選擇
		var navUl=document.getElementsByClassName("nav")[0];//這是單獨找一個 所以需要加上下標下同
		var subnavUl=document.getElementsByClassName("subnav")[0];
		var navLi=navUl.getElementsByTagName("li");  //這裡要找到navUl裡面所有的li 所以不加下標 下同
		var subnavLi=subnavUl.getElementsByTagName("li");
			for(var i=0;i<navLi.length;i++){//迴圈navUl裡面的li
				navLi[i].index=i;//navLi[i].index是指navUl裡面的li的下標(index);為該li新增一個index屬性,並將index的值設定為i
				navLi[i].onclick=function(){//點選事件 點選navUl裡面的li
					for(var j=0;j<navLi.length;j++){//迴圈去掉navUl裡面的li的所有樣式,把點選所對應subnav裡面的li顯示出來
						navLi[j].removeAttribute("class");//清除navUl裡面的所有li樣式
						subnavLi[j].style.display="none";//隱藏subnavLi裡面li
					}
					this.setAttribute("class","checked");//給所navUl裡面點選的li樣式
					subnavLi[this.index].style.display="block"//讓subnavLi裡面所對應的li顯示
				}
			}
        //jq的方法  jq包 上面已經引入好了 當然也可以自行引入
        //因為jq的選擇器很好 很強大 所以非常簡單
        $(function(){
        	$(".nav li").click(function(){//直接點選事件
        		$(this).addClass("checked").siblings().removeClass("checked");//給當前點選的li一個樣式 移除當前li的所有同胞元元素的樣式
        		$(".subnav li").eq($(this).index()).show().siblings().hide();//讓subnav裡面當前點選元素下標所對應的li顯示  隱藏subnav裡面當前點選元素下標以外的li
        	})
        })

當然寫選項卡的方法有很多 我只寫了兩個最簡單的 最常用的