使用原生JS时,在给tab绑定click事件时,我们怎么获取tab的索引?
来源:3-1 tab切换综合示例
Edward666
2019-12-13 22:36:15
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"> <title>Document</title> <link rel="stylesheet" href="css/idangerous.swiper2.7.6.css"> <style> *{ padding: 0; margin: 0; box-sizing: border-box; } img{ border: none; width: 100%; height: 100%; vertical-align: top; } html,body, .swiper-container, .swiper-wrapper, .swiper-slide{ width: 100%; height: 100%; } li{ list-style: none; } a{ text-decoration: none; color: #000; } /* tab */ .tab-container{ position: fixed; bottom: 0; left: 0; width: 100%; height: 50px; display: flex; z-index: 999; background-color: #fff; } .tab-item{ width: 25%; height: 100%; display: flex; justify-content: center; align-items: center; } .tab-link{ width: 100%; height: 100%; } .tab-item-active{ color: #f00; background-color: #ddd; } </style> </head> <body> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide"><img src="image/001.png" alt=""></div> <div class="swiper-slide"><img src="image/002.png" alt=""></div> <div class="swiper-slide"><img src="image/003.png" alt=""></div> <div class="swiper-slide"><img src="image/004.png" alt=""></div> </div> </div> <ui class="tab-container" id="tabContainer"> <li class="tab-item tab-item-active" data-index="0">课程</li> <li class="tab-item" data-index="1">下载</li> <li class="tab-item" data-index="2">发现</li> <li class="tab-item" data-index="3">我的</li> </ui> <script src="js/idangerous.swiper2.7.6.min.js"></script> <script> var tabContainer = document.getElementById('tabContainer'); var tabItems = tabContainer.querySelectorAll('.tab-item'); var mySwiper = new Swiper('.swiper-container',{ loop:true, onSlideChangeStart: function(swiper){ var index = swiper.activeLoopIndex; for(var i=0,num = tabItems.length; i<num; i++){ tabItems[i].classList.remove('tab-item-active'); } tabItems[index].classList.add('tab-item-active'); } }) tabContainer.addEventListener('click', function(ev){ if(ev.target && /(^|\s)tab\-item($|\s)/.test(ev.target.className)){ // console.log(ev.target.getAttribute("data-index")); var index = ev.target.getAttribute("data-index"); for(var i=0,num = tabItems.length; i<num; i++){ tabItems[i].classList.remove('tab-item-active'); } tabItems[index].classList.add('tab-item-active'); mySwiper.swipeTo(index); } }, false); </script> </body> </html>
我是手动改每个tab标签添加了一个data-index,然后标明每一个tab的索引,然后通过getAttribute来获取的。请问老师还有没有更加简单的方法来获取tab的索引啊?
2回答
同学你好,还可以在循环的时候,给每个添加一个属性,然后在点击的时候获取这个属性。与同学写的添加到html上原理是相同的。
原生js的话,当前已经是简洁的了,若想更加简洁,可以使用jquery的index()方法。
如果我的回答帮助了你,欢迎采纳,祝学习愉快~
好帮手慕慕子
2019-12-14
同学你好,你这种方式已经是最简单直接的了。
如果帮助到了你,欢迎采纳,祝学习愉快~
相似问题