jq实现的tab小demo

###一:体会###

  • 虽然只是一个很小的demo,但途中却遇到很多问题,问题都很小但是却很难发现,解决过程很是恼火,偶尔灵光一闪却又想了起来,而且混淆了很多jq和原生js中的方法,分不清楚哪个是jq中的,哪个是原生js中的,有很多东西都看过,但是却又很多细节不清楚,做东西时很容易发生问题并且半天发现不了,要是有过目不忘的本领就好了~~

###二:查询知识点###

  • 不是jq对象无法使用jq库中的方法,比如下列代码中的boxs[i],不要将其转化为jq对象$(boxs[i])才能使用方法show()
  • 在for循环中使用let声明的变量只在本轮循环有效,每一次循环的变量都是一个新的变量,可以循环闭包中变量i的问题,也在下面代码中有体现
  • 数组也具有indexOf方法,例如:arr.indexOf(“a”);返回"a"在数组中第一次出现的位置
  • 原生js中绑定点击事件方法:.onclick = function(){}; jq中绑定点击事件方法:.click(function(){});或者使用.on() 方法
  • 事件冒泡和事件捕捉的区别:父级元素和子级元素都绑定了click事件,如果点击了子级元素,父级元素和子级元素都会触发click事件
  • 事件捕捉:父元素先触发,子元素后触发
  • 事件冒泡:子元素先触发,父元素后触发
  • this的指向由运行时指定,而不是编写时指定,箭头函数相反
  • jq中的eq有两种用法: 1. :eq(index)选择器用法,2. .eq(index)函数用法,都是获取相应index位置的元素
  • jq中的index()方法,不传参数index()用法,获取相应元素在同胞元素的位置,传参 ( ) . i n d e x ( e l e m e n t ) 用 法 , 获 取 e l e m e n t 元 素 在 ().index(element)用法,获取element元素在 ().index(element)element(selector)中的位置,element为相应的jq和dom选择器
  • .sibings()获取相应元素的同胞元素,还可以添加选择器限制相应选择器的同胞元素.sibings(selector)
  • mouseover与mouseenter的区别:
  • 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。
  • 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。
    mouseout与mouseleave同理
    ###三:代码
    ####html代码:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>tab选项卡</title>
		<link rel="stylesheet" href="css/tab.css" />
	</head>
	<body>
		<div class="main">
			<ul class="tab_nav">
				<li class="tab select">HTML</li>
				<li class="tab unsel">CSS</li>
				<li class="tab unsel">JS</li>
				<li class="white">空白</li>
			</ul>
			<div class="tab_content">
				<div class="box1">我负责网页结构。</div>
				<div class="box2 hide">我负责网页样式。</div>
				<div class="box3 hide">我负责网页特效。</div>
			</div>
		</div>
		
		<script src="js/jquery-1.11.0.min.js"></script>
		<script src="js/tab.js"></script>
	</body>
</html>

####css代码:

body,ul,li,div{
	margin:0px;
	padding:0px;
}
ul,li{
	list-style: none;
}
ul:after{
	content:"";
	display: block;
	clear:both;
}
li{
	float:left;
	padding:5px;
}
.main{
	padding:20px;
	border:1px solid #bbb;
	width:280px;
	margin:100px auto 0;
}
.tab_nav .select{
	border-top:1px solid #bbb;
	border-left:1px solid #bbb;
	border-right:1px solid #bbb;
}
.tab_nav .unsel{
	border-bottom:1px solid #bbb;
	
}
.tab_nav .white{
	text-indent: -9999em;
	width:100px;
	border-bottom:1px solid #bbb;
}
.tab_nav .tab{
	width:46px;
	text-align: center;
	box-sizing;content-box;
}
.tab_content div{
	padding-top:10px;
	height:50px;
}
.tab_content .hide{
	display: none;
}

####javascript代码:

$(function(){
	var tabs = $(".main .tab_nav .tab");
	var boxs = $(".main .tab_content div");
	for(let i in tabs){
		tabs[i].onclick = function(){
			$(this).addClass("select").removeClass("unsel").siblings().addClass("unsel").removeClass("select");
			$(boxs[i]).show().siblings().hide();
		};
	};
});

###四:demo效果图
这里写图片描述


如果有问题,或者有好的意见,可以在下面给我评论,我还是个noob.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值