用原生JS、jQuery 写简单选项卡

原生选项卡

	简单写几个选项卡,都是底层,使用原生编写的,如果有所帮助,请点赞哦

HTML代码

<div id="tab" class="abc">
    <ul>
        <li class="select">box1</li>
        <li>box2</li>
        <li>box3</li>
    </ul>
    <div class="select">bigbox1</div>
    <div>bigbox2</div>
    <div>bigbox3</div>
</div>

版本1

思路

    1. 获取所有的li;
    2. 循环所有的li,给每一个li绑定点击事件;
    3. 点击当前li,移除其他li的select的class名,并且移出所有div的class;
    4. 点击li,让被点击的li新增class类名是select;并且让与之对应的div新增class;

代码

	var oTab = document.getElementById("tab");
	var oLis = oTab.getElementsByTagName("li");
	var divs = oTab.getElementsByTagName("div");
	 for(var i=0;i<oLis.length;i++){
	  oLis[i].index = i;
        oLis[i].onclick = function () {
            // 点击,让所有li的class都清除;
            for(var j=0;j<oLis.length;j++){
                oLis[j].className="";
                divs[j].className="";
            }
              this.className = "select";
            divs[this.index].className="select"
        }
    }

版本2

使用了ES6 let

	 	let tab = document.getElementById("tab");
	    let oLis = tab.getElementsByTagName("li");
	    let divs = tab.getElementsByTagName("div");
	     for(let i=0;i<oLis.length;i++){
        // let 会让for循环没循环一次,都会形成一个子作用域,这个子作用域存储了每一次循环i对应的值;
         oLis[i].onclick = function () {
             // 清空所有的li和div身上的class;
             for(var j=0;j<oLis.length;j++){
                 oLis[j].className="";
                 divs[j].className="";
             }
             // this--> 点击的li;
             this.className="select";
             divs[i].className="select";
         }
    }

版本3 jQuery

<script src="jquery-1.11.3.js"></script>
<script>
 $("li").click(function () {
        // console.log(this);// 被点击的li;
        // this把其转成jquery的实例
        $(this).addClass("select").siblings().removeClass("select").parent().next().children().eq($(this).index()).addClass("select").siblings().removeClass("select");
    });
    </script>

温馨提示:使用jQuery之前,请先引用jQuery 哦
都是底层代码(未优化),如有不当,请评论指出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值