search

Home  >  Q&A  >  body text

javascript - 征求最优代码实现

tab切换在web开发中很常见。请问如何用最少最易维护的代码实现如下图的功能:点击左侧tab,右侧切换不同的内容。

类库使用jQuery。无需思路,只求代码,看看各位大神是怎么实现的。感激不尽

html结构

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<code><p class="catalogue-content">

    <ul class="catalogue-parent">

        <li class="selected">男装</li>

        <li>女装</li>

        <li>童装</li>

    </ul>

    <p class="catalogue-child">

        <p class="catalogue-list">

            <p class="catalogue-line">

                <a href="#">男装1</a>

                <a href="#">男装2</a>

            </p>

        </p>

    </p>

    <p class="catalogue-child" style="display: none;">

        <p class="catalogue-list">

            <p class="catalogue-line">

                <a href="#">女装1</a>

                <a href="#">女装2</a>

            </p>

        </p>

    </p>

    <p class="catalogue-child" style="display: none;">

        <p class="catalogue-list">

            <p class="catalogue-line">

                <a href="#">童装1</a>

                <a href="#">童装2</a>

            </p>

        </p>

    </p>

</p>

</code>

巴扎黑巴扎黑2939 days ago435

reply all(6)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:13:12

    你这是要脑洞大开的节奏啊,那就先抛砖引玉了,在数据上要做一下改动.
    首先声明,下面的代码没有经过测试的,只是顺手而为的,正确性自己试验了

    1

    2

    3

    4

    5

    6

    <code><ul class="catalogue-parent">

        <li class="selected" data-index="0">男装</li>

        <li data-index="1">女装</li>

        <li data-index="2">童装</li>

    </ul>

    </code>

    1

    2

    3

    4

    5

    <code>var $catalogueChild = $('.catalogue-child');

    $('ul.catalogue-parent').find('li').on('click', function() {

        $catalogueChild.hide().eq($(this).attr('data-index')).show();

    });

    </code>

    或者这样呢

    1

    2

    3

    4

    5

    6

    7

    <code>var $catalogueChild = $('.catalogue-child');

    $('ul.catalogue-parent').find('li').each(function(i) {

        $(this).on('click', function() {

            $catalogueChild.hide().eq(i).show();

        });

    });

    </code>

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:13:12

    1

    2

    3

    4

    5

    6

    7

    8

    <code><script>

        $(function(){

            $(".catalogue-parent li").bind("click",function(){

                $(".catalogue-child").hide().eq($(".catalogue-parent li").index(this)).show();

            })

        })

    </script>

    </code>

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:13:12

    无需思路,只求代码
    你这是耍流氓嘛

    reply
    0
  • 阿神

    阿神2017-04-10 15:13:12

    易维护要看怎么个维护法,比如加减tab是维护?横的变竖的是维护?改颜色改大小算维护?鼠标点击改上浮算维护?还是只要没bug不用改就算维护了?

    总之“最易维护”是伪命题

    另外,看代码是学不到思想的,别说思想了,就算是算法也很难看代码就看懂

    reply
    0
  • PHPz

    PHPz2017-04-10 15:13:12

    懒人之家这个好像挺适合你的,不管出于什么目的吧,这么的tab切换很多

    reply
    0
  • 阿神

    阿神2017-04-10 15:13:12

    代码如果下

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    <code>$(function(){

            //绑定tab的点击事件

            $('.catalogue-parent > li').on('click',function(){

                if($(this).hasClass('selected')){ //点击的是当前显示的 li

                    return false; //直接返回

                } else { //点击的不是当前显示的 li

                    $(this).siblings('.selected').removeClass('selected')

                    .end().addClass('selected');  //给点击的 li, 添加selected

     

                    var indexOfthis = $(this).index('.catalogue-parent > li');

                    $('.catalogue-child').hide().eq(indexOfthis).show(); //显示对应的内容

     

                    return false;

                }

            });

        });

     

    </code>

    reply
    0
  • Cancelreply