Twitter

@carrielis 可以的

jQuery 实现网页选项卡

in Javascript // 33 Comments

很多网站都有使用网页选项卡,最常见的就是博客的侧边栏上,比如把最新文章、随机文章、最受欢迎文章三项集成一栏,然后用选项卡的方式展现出来,节省空间,方便访问者浏览。于是就想到要自己写个 jQuery 代码来实现。

HTMLCSS 代码这里略过,可以查看 Demo。jQuery 代码如下:

jQuery(function($) {

    //给当前要显示的标题添加类 selected,然后在它后面插入其他项的标题。
    $('.tab_fst h2').addClass('selected').after($('.tab_sec h2'), $('.tab_trd h2'));

    //把其他选项的内容插到第一个选项的内容的后面并隐藏。
    $('.tab_content:gt(0)').insertAfter('.tab_content:eq(0)').hide();

    //上面代码执行后,会留下两个空的 div,用 .remove() 方法删掉。
    $('.tab_sec, .tab_trd').remove();

    //首先给选项卡的标题增加类 title,以便我们修改美化标题栏的样式;
    //然后添加点击每个标题的效果。
    $('.tab_fst h2').addClass('title').click(function() {

        //给被点击的标题添加类 selected,并移除其他标题项的 selected 类。
        $(this).addClass('selected').siblings().removeClass('selected');

        //因为每个标题 h2 对应着相应的内容 tab_content,所以用变量 i 获取 h2 的索引
        var i = $('.tab_fst h2').index(this);

        //让被点击选项的内容显示,隐藏其他项。
        $('.tab_content').eq(i).fadeIn('slow').siblings(".tab_content").hide();
    });
});

如果第一项后面有很多项,而你只想实现三个选项卡,那 $('.tab_content:gt(0)') 这里就要改一下。

2010-10-1 更新:写的 CSS 有点问题,导致 IE8 下有 Bug,已修复。

33 responses to jQuery 实现网页选项卡

  1. 1pondo / September 1, 2010 / Reply

    <meta http-equiv="Content-Type" content="; charset=” />

    这行直接输出了呢,导致没有编码,在Safari 浏览器下面也是显示为火星文,我说的是 demo

  2. QiQiBoY / September 1, 2010 / Reply

    其实昨天我也写了个选项卡的js类,不过最后没用在自己博客上,因为我不太喜欢将本来想要给别人看的东西再故意隐藏起来。。。

  3. 葡萄 / September 2, 2010 / Reply

    很受用的教程, 膜拜中。。
    不知道贵博现在的主题能否共享呀 邮箱waterbby@163.com

  4. 酷剑 / October 1, 2010 / Reply

    当切换第二个之后,再点击第一个时候第一个的内容不出现了。这是为什么呢?

  5. 酷剑 / October 1, 2010 / Reply

    嗯。是世界之窗。也是ie内核的。 点击第三个之后,再点击第二个里面的内容就会出现,但是第一个点击之后依旧看不到。

Trackbacks/Pingbacks:

  1. zSnos(Veezy Edition) 主题折腾手记 | Weitian Zhao's Blog

Leave a Reply