jquery同一页面tab栏多次调用

jquery同一页面tab栏多次调用

  • 1.jQuery写法

在一个页面中引入多个tab的例子很常见,除了使用别人写好的插件和一些成熟的框架,想在同一页面对tab多次调用。几行代码就实现了jQuery封装的多tab切换效果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>封装多个tab栏</title>
    <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<style>
*{margin: 0;padding: 0;}	
.b-box {border:1px solid #d8dbe5;width: 250px;height:260px;float: left;margin-left: 100px;}
.b-box .b-top{width:100%;height:10%;background-color:#FFF;}
.b-box .b-bottom {width: 100%;height:90%;}
.b-box .b-ul{list-style: none;background-color:#FFF;width: 100%;}
.b-box .b-bottom li{width:100%; background-color: #FFF;display: none;height: 100%;}	
.b-box .b-top button{color:#666;outline:none;border:0;float:left;height:100%;width:25%;}	
.b-box .b-top .b-color {background-color:#FFF;}
.b-box .b-bottom .b-show{display: block;}
</style>
<!-- jquery写法 -->
   <script type="text/javascript">
        $(function(){
            function tab(obj){
                $("#"+obj).find("button").on('mouseenter',function(){
                    $(this).toggleClass("b-color").siblings().removeClass("b-color");
                    $("#"+obj).find("li").eq($(this).index()).toggleClass("b-show").siblings().removeClass("b-show");
                });
            }
            tab("b-one");
            tab("b-two");
        })
    </script>
</head>
<body>
<div class="b-box" id="b-one">
    <div class="b-top">
        <button class="b-color">头条</button>
        <button>社会</button>
        <button>娱乐</button>
        <button>军情</button>
     
    </div>
    <div class="b-bottom" >
      <ul class="b-ul">
            <li class="b-show">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
      </ul>
    </div>
</div>
<div class="b-box" id="b-two">
    <div class="b-top">
        <button class="b-color">头条</button>
        <button>社会</button>
        <button>娱乐</button>
        <button>军情</button>
     
    </div>
    <div class="b-bottom" >
      <ul class="b-ul">
            <li class="b-show">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
      </ul>
    </div>
</div>
</body>
</html>
  • 2、JS写法

jQuery虽然是对前端程序员的福利,但是原生JS会让我们更好的思考,逻辑性较强。以下代码网上很多,献上闭包版本的,(虽然也不太了解闭包)和普通版本的,作为对比。也都能实现多个tab切换。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>封装多个tab栏</title>
    <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<style>
*{margin: 0;padding: 0;}	
.b-box {border:1px solid #d8dbe5;width: 250px;height:260px;float: left;margin-left: 100px;}
.b-box .b-top{width:100%;height:10%;background-color:#FFF;}
.b-box .b-bottom {width: 100%;height:90%;}
.b-box .b-ul{list-style: none;background-color:#FFF;width: 100%;}
.b-box .b-bottom li{width:100%; background-color: #FFF;display: none;height: 100%;}	
.b-box .b-top button{color:#666;outline:none;border:0;float:left;height:100%;width:25%;}	
.b-box .b-top .b-color {background-color:#FFF;}
.b-box .b-bottom .b-show{display: block;}
</style>

<!--js写法 -->   
 <!-- 1.闭包用法 -->
 <script>
 
            function tab(obj) {
                var target=document.getElementById(obj);
                var btns=target.getElementsByTagName("button");
                var lis=target.getElementsByTagName("li");
                for(var i=0;i<btns.length;i++)
                {
                    var timer=null;
                    btns[i].onmouseover=function (num) {
                        return function () {//闭包用法
                            clearTimeout(timer);
                            timer=setTimeout(function () {
                                for(var j=0;j<btns.length;j++)
                                {
                                    btns[j].className="";
                                    lis[j].className="";
                                }
                                btns[num].className="b-color"; 
                                lis[num].className="b-show"; 
                            },30);
                        }
                    }(i); 
                }
            }
            tab("b-one");
            tab("b-two");
    </script> 
   <!-- 2.index用法 -->
  <script type="text/javascript">
        window.onload=function(){
            function tab(obj){
                 var target=document.getElementById(obj);
                 var btns=target.getElementsByTagName("button");
                 var lis= target.getElementsByTagName("li");
                 for(var i=0;i<btns.length;i++){
                    btns[i].index=i;//index用法
                    btns[i].onmouseover=function(){
                        for(var i=0;i<btns.length;i++){
                            btns[i].className="";
                            lis[i].className="";
                        }
                        this.className="b-color";//index用法
                        lis[this.index].className="b-show";//index用法
                    }
                 }
            }
           tab("b-one");
           tab("b-two");
        }
    </script>
</head>
<body>
<div class="b-box" id="b-one">
    <div class="b-top">
        <button class="b-color">头条</button>
        <button>社会</button>
        <button>娱乐</button>
        <button>军情</button>
     
    </div>
    <div class="b-bottom" >
      <ul class="b-ul">
            <li class="b-show">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
      </ul>
    </div>
</div>
<div class="b-box" id="b-two">
    <div class="b-top">
        <button class="b-color">头条</button>
        <button>社会</button>
        <button>娱乐</button>
        <button>军情</button>
     
    </div>
    <div class="b-bottom" >
      <ul class="b-ul">
            <li class="b-show">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
      </ul>
    </div>
</div>
</body>
</html>

经验不足,请多指教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值