jQuery之选项卡的简单实现

 更新时间:2014年02月28日 08:57:04   作者:  
本篇文章主要是对jQuery 选项卡的简单实现进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

jQuery实现选项卡功能。首先将界面搭建好。

有导航头tab_menu,还有内容tab_box。

要实现的效果就是,点击后,将相应的内容显示出来,其他内容隐藏掉。

同时为了展现选中状态,为选中的项添加背景,以示区别。

这一次,我自己写了代码,先看html部分:

复制代码 代码如下:

<div class="tab">
    <div class="tab_menu">
        <ul>
            <li class="selected">时事</li>
            <li>体育</li>
            <li>娱乐</li>
        </ul>
    </div>
    <div class="tab_box">
         <div>时事</div>
         <div class="hide">体育</div>
         <div class="hide">娱乐</div>
    </div>
</div>

html中,需要一个大的div,里面有两个子div,一个作为导航头tab_menu,一个作为内容体tab_box。css代码负责布局html内容。

css部分:

复制代码 代码如下:

*{
margin:0;
padding:0;
}
.tab{
    width:240px;
    margin:50px;
    /*border:1px solid;*/
}
.tab_menu{
    clear:both;
}
.tab_menu li{
    float:left;  //将导航头左飘
    text-align:center;  //将文字居中
    list-style:none;  //去除标记符号
    background:#F1F1F1; //设置默认背景色
    border:1px solid #898989; //设置边框色
    margin-right:4px; //每个li之间的距离为4px
    cursor:pointer;  //鼠标浮上之后,会有小手的标示出现
    padding:1px 6px; //控制li的内部距离
    border-bottom:none;

}
.tab_menu li.hover{
    background:#DFDFDF;
}
.tab_menu li.selected{//为选中的选项加背景与颜色
    color:#FFF;
    background:#6D84B4;
}
.tab_box{
    clear:both; //清楚float效果的影响
    height:100px; //设置高度为100px
    border:1px solid #898989; //设置内容体的边框样式
}
.hide{//隐藏需要隐藏的内容div
    display:none;
}

待布局完成之后,进行jQuery的动作:
复制代码 代码如下:

<script type='text/javascript'>
$(function(){
    //1.点击时改变css属性,移除之前的selected选项,添加新的selected选项
    //2.隐藏之前的div层,显示对应得div层
    //为导航中的li注册点击事件
    var $div_li = $(".tab_menu ul li");
    $div_li.click(function(){
        $(this).addClass('selected').siblings().removeClass('selected');
        //var index = $div_li.index(this);
        //$("div.tab_box > div").eq(index).show().siblings().hide();
        var text = $(this).text();
        if(text=='时事')
        {
            $('.tab_box div:contains("时事")').removeClass('hide').siblings().addClass('hide');
        }
        if(text=='体育')
        {
            $('.tab_box div:contains("体育")').removeClass('hide').siblings().addClass('hide');
        }
        if(text=='娱乐')
        {
            $('.tab_box div:contains("娱乐")').removeClass('hide').siblings().addClass('hide');
        }
    }).hover(function(){
            $(this).addClass("hover");
        },function(){
            $(this).removeClass("hover");
        });
});
</script>

这是我写的jQuery代码,我的思路是,点击选项卡时,添加selected样式,同时移除兄弟选项卡的selected样式。

再一个,如何才能触发相应的tab_box中的内容的隐藏与显示呢?

我发现了他们有相对应的内容,就是选项头为“实事”的对应的选项体也为“实事”,选项头为“体育”的对应的选项提也为“体育”等。

我就想,先获取选项头的内容,做出判断,当它为不同的值时,就触发不同的效果。

效果是实现了,可是漏洞很明显,因为并不是所有的选项卡都是标题与内容体相对应。

再看看下面的代码:

复制代码 代码如下:

<script type="text/javascript" >
//<![CDATA[
    $(function(){
        var $div_li =$("div.tab_menu ul li");
        $div_li.click(function(){
            $(this).addClass("selected")            //当前<li>元素高亮
                   .siblings().removeClass("selected");  //去掉其它同辈<li>元素的高亮
            var index =  $div_li.index(this);  // 获取当前点击的<li>元素 在 全部li元素中的索引。
            $("div.tab_box > div")       //选取子节点。不选取子节点的话,会引起错误。如果里面还有div
                    .eq(index).show()   //显示 <li>元素对应的<div>元素
                    .siblings().hide(); //隐藏其它几个同辈的<div>元素
        })
    })
//]]>
</script>

这里的处理就特别的巧妙,它通过获取li的索引,对选项体进行处理。它巧妙的利用了一个隐藏的对应关系,就是索引值。

这样即便选项头与选项体内容不对应,一样可以实现联动效果。

通过这次练习,我觉得,自己先动脑子想一想还是很好的。可以发现思路的差异,才能够发现不足,知道差距。有时候甚至你的思路会更好呢!

相关文章

  • jQuery 中msgTips 顶部弹窗效果实现代码

    jQuery 中msgTips 顶部弹窗效果实现代码

    最近发现好多网站都采用顶部弹窗,并且不用用户手动去点击确定。感觉这样很方便用户,下面小编把实现代码分享给大家,感兴趣的的朋友一起看看吧
    2017-08-08
  • 基于jQuery的实现简单的分页控件

    基于jQuery的实现简单的分页控件

    分页控件需要向后台发送请求,发送的参数包括当前页,每页显示数量,查询条件;并且获取数据加载到当前页面
    2010-10-10
  • jQuery EasyUI中DataGird动态生成列的方法

    jQuery EasyUI中DataGird动态生成列的方法

    EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍EasyUI中DataGird动态生成列的方法
    2016-04-04
  • jQuery事件绑定方法学习总结(推荐)

    jQuery事件绑定方法学习总结(推荐)

    下面小编就为大家带来一篇jQuery事件绑定方法学习总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • jquery与js函数冲突的两种解决方法

    jquery与js函数冲突的两种解决方法

    如果您想继续使用原先的$(),同时还需要与别的类库不冲突的话,下面由两种方法,有类似需求的朋友可以参考下,希望对大家有所帮助
    2013-09-09
  • jQuery日历插件datepicker用法详解

    jQuery日历插件datepicker用法详解

    这篇文章主要为大家详细介绍了jQuery日历插件datepicker用法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • jquery清空input标签的值及清除标签里面的内容

    jquery清空input标签的值及清除标签里面的内容

    这篇文章主要介绍了jquery清空input标签的值,清除标签里面的内容,清除input标签的值,可以通过直接将input标签的值设置为空来实现,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10
  • jquery 插件学习(五)

    jquery 插件学习(五)

    一般对外发布的插件都应该进行封装,封装的插件还应该符合规范,只有这样写的插件才具有推广价值,并得到其他用户的喜爱
    2012-08-08
  • jquery easyui滚动条部分设置介绍

    jquery easyui滚动条部分设置介绍

    dialog并没有随着滚动条往下滚动,这时就需要用户滑动滚动条来定位dialog,在说出解决方案前先来普及一下jquery关于定位的几个方法
    2013-09-09
  • EasyUI框架 使用Ajax提交注册信息的实现代码

    EasyUI框架 使用Ajax提交注册信息的实现代码

    这篇文章主要介绍了EasyUI框架 使用Ajax提交注册信息的实现代码的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09

最新评论