总结js实现动态选项卡的四种方法!
2666
本篇文章给大家详细介绍JS实现动态选择选项卡的多种方法,希望对需要的朋友有所帮助!
JS多种方法实现动态选择选项卡
首先贴出HTML 和 CSS 这个不是重点
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Document</title>
- <link rel="stylesheet" href="css/reset.min.css">
- <style>
- .tabBox{
- margin: 20px auto;
- width: 500px;
- }
- .tabBox ul{
- position: relative;
- top: 1px;
- }
- .tabBox ul li{
- display: inline-block;
- padding: 0 5px;
- margin-right:10px;
- line-height: 33px;
- border: 1px solid #aaa;
- cursor: pointer;
- }
- .tabBox ul li.active{
- border-bottom-color:#fff;
- /* 当前LI的边框覆盖着DIV的边框,
- 我们让LI的下边框是背景颜色白色,这样看上去就像没边框了 */
- font-weight: bold;
- color: lightcoral;
- }
- .tabBox div{
- display: none;
- line-height: 148px;
- text-align: center;
- border: 1px solid #aaa;
- }
- .tabBox div.active{
- display: block;
- }
- </style>
- </head>
- <body>
- <div id="tabBox">
- <ul>
- <li>新闻</li>
- <li>电影</li>
- <li>音乐</li>
- </ul>
- <div>嘟嘟</div>
- <div>滴滴</div>
- <div>嘟嘟滴滴</div>
- </div>
- <script src="js/tab_zy.js"></script>
- </body>
- </html>
【实现思路】
给所有的LI绑定点击事件,当点击任何一个li 的时候,都做第二步操作
可以先让所有的LI && p 的class都为空(xxx.className=’’),在让当前点击 的这个LI和对应的p有 active这个样式类即可
以下是JS获取元素的 公用部分
- var oBox = document.getElementById('tabBox'),
- oList = oBox.getElementsByTagName('li'),
- op = oBox.getElementsByTagName('p');
方案一:
- var LastIndex = 0 //记录上次所选的LI 选中的索引
- for(var i=0;i<oList.length;i++){
- oList[i].CurIndex = i
- oList[i].onclick = function(){
- if(this.CurIndex===LastIndex) return;//=>如果当前点击的索引和上一次索引相同(点击的就是上一个被选中的),我们不做任何事情
- oList[LastIndex].className = op[LastIndex].className = '' //=>清空上一次
- oList[this.CurIndex].className=op[this.CurIndex].className = 'active'
- //=>修改LAST-INDEX值,让当前本选中的索引作为下一次点击要清除的上一次的索引
- LastIndex = this.CurIndex
- }
- }
方案二:
- //=>1.传递对象
- for(var i = 0; i<oList.length ; i++){
- oList[i].onclick = function(){
- ChangeTab(this);
- }
- }
- function ChangeTab(n){
- for(var j=0;j<oList.length;j++){
- //=>如果当前循环的LI和传递进来点击的那个元素相同,说明当前循环的这个LI就是被点击的,让其有选中样式
- if(oList[j]===n){
- oList[j].className= op[j].className = 'active'
- }else{
- //=>不相等,则不是被点击的,我们取消选中样式即可
- oList[j].className= op[j].className = ''
- }
- }
- }
方案三:
- for (let i = 0; i < tabList.length; i++) {
- tabList[i].onclick=function(){
- // 事件绑定:给当前元素的某一个事情绑定一个方法,绑定的时候方法没有执行
- // (属于创建一个方法,当在页面中手动触发点击事件的时候绑定的方法才会执行)
- changeTab(i);
- }
- }
- // 形参变量:当执行这个方法的时候,会把当前点击的这个LI索引传递过来
- function changeTab(n) {
- // 1、所有都没有选中样式
- for (let i = 0; i < tabList.length; i++) {
- tabList[i].className='';
- pList[i].className ='';
- }
- // 2、当前点击的所有选中样式
- tabList[n].className='active';
- pList[n].className = 'active';
- }
方案四:(JQ实现)
- //当HTML结构都加载完成执行函数
- jQuery(function($){
- //基于JQ内置EACH机制,给每个LI 都绑定了 点击事件
- $('.tabBox>.header>li').on('click',function(){
- let index = $(this).index();//获取当前点击LI 的索引
- //siblings() 获取兄弟元素
- $(this).addClass('active').siblings().removeClass('active').parent().nextAll('p').eq(index).addClass('active').siblings('p').removeClass('active')
- });
- });
本文网址:https://www.zztuku.com/index.php/detail-12917.html
站长图库 - 总结js实现动态选项卡的四种方法!
申明:本文转载于《CSDN》,如有侵犯,请 联系我们 删除。
您还没有登录,请 登录 后发表评论!
提示:请勿发布广告垃圾评论,否则封号处理!!