jQuery实现tab切换

2019-07-24  本文已影响0人  学的会的前端

jQuery实现tab切换

<!DOCTYPE html>
<html lang="en">
<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>jquery的tab切换</title>
    <style>
        .mod-tab {
            border: 1px solid #ccc;
            margin-top: 50px;
        }
        .mod-tab * {
            box-sizing: border-box;
        }
        .mod-tab ul, .mod-tab li {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .mod-tab .tabs:after {
            content: '';
            height: 0;
            display: table;
            clear: both;
        }
        .mod-tab .tabs li{
            float: left;
            width: 33.3%;
            height: 30px;
            line-height: 30px;
            text-align: center;
            border-right: 1px solid #ccc;
            border-bottom: 1px solid #ccc;
            cursor: pointer;
        }
        .mod-tab .tabs li:last-child{
            border-right: none;
        }
        .mod-tab .tabs .active {
            background: #eee;
        }
        .mod-tab .panel {
            display: none;
            height: 180px;
            padding: 20px;
        }
        .mod-tab .active {
            display: block;
        }
    </style>
</head>
<body>
    <div class = "mod-tab">
        <ul class = "tabs">
            <li class = "active">tab1</li>
            <li>tab2</li>
            <li>tab3</li>
        </ul>
        <div class = "panel active">内容1</div>
        <div class = "panel">内容2</div>
        <div class = "panel">内容3</div>
    </div>
    <div class = "mod-tab">
        <ul class = "tabs">
            <li class = "active">tab1</li>
            <li>tab2</li>
            <li>tab3</li>
         </ul>
        <div class = "panel active">内容1</div>
        <div class = "panel">内容2</div>
        <div class = "panel">内容3</div>
    </div>
        <div class = "mod-tab">
            <ul class = "tabs">
                <li class = "active">tab1</li>
                <li>tab2</li>
                <li>tab3</li>
            </ul>
            <div class = "panel active">内容1</div>
            <div class = "panel">内容2</div>
            <div class = "panel">内容3</div>
    </div>

    <script src = "http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
    <script>
        
        $('.tabs>li').on('click',function(){
            //防止函数的重复调用
            var $this = $(this)
            //获取当前点击元素的下表,index()获取的是当前元素在兄弟元素排行中的顺序
            var index = $this.index()
            //使触发点击事件的元素添加active,其兄弟元素移除active
            $this.addClass('active').siblings().removeClass('active')
            //li对应的div的内容展示出来,同时div的兄弟元素不展示内容,移除active
            /*一个tab时的代码
            $('.panel').eq(index).addClass('active').siblings().removeClass('active')
            */
            $this.parents('.mod-tab')
                 .find('.panel')
                 .eq(index).addClass('active').siblings().removeClass('active')
            
        })

        /*
      当存在很多tab的时候,以上代码只能保证第一个tab的效果是实现的,而下面的没有效果。
      原因在于$('.panel')选中的是9个div,而index是每个tab的div,所以点击下面的tab,展现的内容还是第一个的。
      */


    </script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读