开发者社区> liminjun88> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

手动实现jQuery Tools里面tab功能

简介:
+关注继续查看

平时开发中用的Javascript类库都是 jQuery,用到插件或者第三方类库能从jQuery Tools里面找到,基本不用其他的。当然有时同事喜欢使用jQuery UI里面的插件。并且jQuery Tools里面的插件和jQuery UI里面的插件还会出现冲突。这个事情就不舒服了。不过基本开发之前就确定好用哪个类库,免得后期开发中因为冲突的增加,增加项目的开发周期和开发成本。 当然如果你掌握好jQuery Tools里面的插件,有些功能和效果很快就开发好了。之前一个项目,就只使用了jQuery Tools里面的tab插件和scrollable功能就完成了。线上地址:http://whirlpoolkitchen.msn.com/

说 明:公司一个项目使用的ASP.NET MVC 1.0,jQuery版本是visual studio创建项目时自带的版本。1.4.2。然后项目中使用到一个拖拽功能,以前开发的同事估计也只找到了基于jQuery 1.4.2的第三方类库,我没有具体去分析这个拖拽插件。现在项目要进行改版升级,增加了一个tab功能,我平时用jQuery Tools用的多,首先想到是用jQuery Tools里面的tab插件。但是jQuery Tools版本升级到v1.2.7时把默认的要求的jQuery的版本也提高了。要基于jQuery 1.7.2。大家可以去它的下载地址看一下:http://jquerytools.org/download/ 。先说明一下,我之前也没有解决过一个项目中用到不同版本的jQuery问题,然后我就在网上搜索解决方法。但是基本上是把老版本放在一个变量中,然后使 用$.noConflict(true)方法。但是特殊的是jQuery Tools貌似用不了这个方法把高版本的jQuery传入到类库中。

其实前端开发中tab功能很简单,当然自己写成jQuery Tools中tab一样强大,还是需要不少代码和分析的。我这里写出一个最简单,也是最粗糙的版本。jQuery Tools中tab功能演示地址:http://jquerytools.org/demos/tabs/index.html。截图如下:

image

点击不同tab,高亮当前的tab背景,然后下面显示相对应的内容。样式和布局尽可能利用jQuery Toolst提供的,代码如下所示,这里主要说一下this的使用和jQuery中index()和eq()函数的使用。

<html>
<head>
    <title>手动实现tab功能</title>
    <style type="text/css">
        body {
            font-family: 微软雅黑;
            font-size: 14px;
        }

        .tabs {
            list-style: none;
            margin: 0;
            padding: 0;
            border-bottom: 1px solid #666;
            height: 30px;
            width:659px;
        }

        ul.tabs li {
            float: left;
            text-indent: 0;
            padding: 0;
            margin: 0;
            list-style-image: none;
        }

        .panes div {
            display: none;
            padding: 15px 10px;
            border: 1px solid #999;
            border-top: 0;
            height: 100px;
            font-size: 14px;
            background-color: #fff;
        }

        .tabs a {
            background: url(http://jquerytools.org/media/img/tabs/blue.png) no-repeat -420px 0;
            font-size: 11px;
            display: block;
            height: 30px;
            line-height: 30px;
            width: 134px;
            text-align: center;
            text-decoration: none;
            color: #333;
            padding: 0px;
            margin: 0px;
            position: relative;
            top: 1px;
        }

        ul.tabs a.current, ul.tabs a.current:hover, ul.tabs li.current a {
            background-position: -420px -62px;
            cursor: default !important;
            color: #000;
        }
            ul.tabs a:hover {
                background-position: -420px -31px;
                color:#fff;
            }
        .panes {
            width: 659px;
            height: 131px;
        }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            //tab切换
            $(".tabs a").click(function () {
                $(".tabs li a").removeClass("current");
                $(this).addClass("current");
                //获取点击a标签父级元素在当前li中index值
                var currenttab = $(this).parent().index();

                $(".panes .panesitem").css({ "display": "none" });
                $(".panes .panesitem").eq(currenttab).css({ "display": "block" });
            });
        });
        
    </script>
</head>
<body>
    <!-- the tabs -->
    <ul class="tabs">
        <li><a href="#" class="current">Tab 1</a></li>
        <li><a href="#">Tab 2</a></li>
        <li><a href="#">Tab 3</a></li>
    </ul>

    <!-- tab "panes" -->
    <div class="panes">
        <div class="panesitem" style="display: block;">First tab content. Tab1</div>
        <div  class="panesitem">Second tab content.Tab2</div>
        <div  class="panesitem">Third tab content.Tab3</div>
    </div>
</body>
</html>

代码相对比较简单。在开发过程有2个问题,第一需要知道当前点击了那个tab,也就是最上 面的a标签。第二个如何去指定的内容div显示。$(this)就是表明当前点击的哪个元素,所以此时就是当前点击的哪个a标 签。$(this).parent()就是当前点击a标签的父级元素。通过Chrome查看如下图所示:

image

$(this).parent().index(),这段代码可能有点难理解。我们看一下jQuery中index()函数的用法。在线地址:http://www.w3school.com.cn/tiy/t.asp?f=jquery_dom_element_methods_index 获得第一个匹配元素相对于同胞元素的index位置,从0开始计数。在这里就反映为当前点击a的父级li元素在三个li的中的位置。我截图是因为我点击的第二个tab,所以此时的$(this).parent().index()的值为1。然后


eq()选择器介绍:http://www.w3school.com.cn/jquery/selector_eq.asp

$(".panes .panesitem").eq(currenttab)此时currenttab为1,所以代码相当于$(".panes .panesitem").eq(1),其实$(".panes .panesitem")返回的是一个元素集合,eq(1)表明从0开始计算,为1的元素被选中。这也正是我要达到的效果。点击上面的tab,显示下面对应的tab content。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JQuery实现仿sina新浪微博新鲜事滚动
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
661 0
Dynatable – 基于 HTML5 & jQuery 的交互表格插件
  Dynatable 一款有趣的,语义化,交互式的表格插件,使用 jQuery,HTML5 和 JSON 实现。Dynatable 的目的是提供一种简单的、可扩展的 API,能够轻松的浏览和操作大规模的数据集。
1227 0
【精心挑选】10款基于 jQuery 的图片360度旋转插件
  之前的文章向大家分享了实现网站功能的各种优秀的 jQuery 插件,今天这篇文章向大家推荐10款基于 jQuery 的图片360度旋转插件,同时还有非常详细的制作教程可以学习和参考。图片旋转展示是一种非常有趣的技术,通过把多张图片合并在一起让你可以实现360度浏览,这种效果常用于旅游网站或者酒店网站,用于展示风景或者房间的内景。
1062 0
jquery插件整理篇(七)表格插件
(1)Flexigrid Flexigrid是一个类似于Ext Gird,但基于jQuery开发的Grid。它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等。Flexigrid显示的数据能够通过Ajax获取或者从一个普通的表格转换。
899 0
推荐18款非常棒的 jQuery 表格插件
  我们一般都是用HTML表格来显示结构化数据,如今有很多的 jQuery 表格插件可以帮助我们更好的组织和控制表格数据,增强表格的功能和操作。今天要与大家分享的是18个非常优秀的 jQuery 表格插件,有用到朋友可以参考一下。
1343 0
jquery插件 - 5个小插件
jQuery 最好的地方在于其方便的插件机制了,而且网上有很多人在贡献有用的插件,但是插件太多,不熟悉的朋友选择起来可能会比较费事。我觉得有必要开此一贴,收集大家一些常用的好插件,最好稍作点评,以供他人参考。
928 0
ASP.NET MVC结合jQuery插件进行数据验证
jQuery Validation是一个强大的数据验证插件,该插件支持“validation rule”即验证规则,规则将对表单内的输入控件进行控制或约束,譬如“本项必填”,“本项不能少于n个字符”,或者“这不是一个有效的email地址” 等等。
842 0
jquery插件 - 8个很有用的jQuery插件
jQuery虚拟键盘 非常适用于在公共场所输入密码,极高的用户体验。查看或下载插件。 在IE中显示文字阴影 查看教程 快速搜索 可以快速定位数据表格。下载插件。 滑动门 菜单动画以及华丽的滑动门效果。
677 0
jquery插件 - 表单插件
Jquery Form Plugin是jquery最重要的插件之一,它利用AJAX技术在不引起页面刷新的情况下POST表单。主要有两个方法:ajaxform和ajaxsubmit。它会自动收集表单元素内容,决定如何管理提交进程。
1102 0
+关注
90
文章
4
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载