自定义jQuery选项卡插件实例


Posted in Javascript onMarch 27, 2013
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>jQuery自定义选项卡插件</title>
<style>
body, ul { padding:0; margin:0; }
li { list-style:none; }
#tabs { zoom:1; }
#tab:after { content:""; display:block; clear:both; }
#tabs li { float:left; padding:10px; color:#FF8900; background:#FFF; cursor:pointer; }
#tabs .active { background:#FF8900; color:#FFF; }
#tabContent { background:#FF8900; color:#FFF; padding:10px; clear:both; }
#tabContent div { display:none; }
#tabContent div.active { display:block; }
</style>
</head>
<body>
<ul id="tabs">
  <li data-tab="users">Users</li>
  <li data-tab="groups">Groups</li>
</ul>
<div id="tabContent">
  <div data-tab="users">Users Content</div>
  <div data-tab="groups">Groups Content</div>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
jQuery.fn.tabs = function (control) {
    var element = $(this);
    var control = $(control);
    element.delegate('li', 'click', function () {
        // 遍历选项卡名称
        var tabName = $(this).attr('data-tab');
        // 点击选项卡时触发自定义事件
        element.trigger('change.tabs', tabName);
    });
    // 绑定到自定义事件
    element.bind('change.tabs', function (ev, tabName) {
        element.find('li').removeClass('active');
        element.find('>[data-tab=' + tabName + ']').addClass('active');
    });
    element.bind('change.tabs', function (ev, tabName) {
        control.find('>[data-tab]').removeClass('active');
        control.find('>[data-tab=' + tabName + ']').addClass('active');
    });
    // 激活第 1 个选项卡
    var firstName = element.find('li:first').attr('data-tab');
    element.trigger('change.tabs', firstName);
    return this;
};
jQuery(function ($) {
    $('#tabs').tabs('#tabContent');
    $('#tab').bind('change.tabs', function (ev, tabName) {
        window.loaction.hash = tabName;
    });
    $(window).bind('hashchange', function () {
        var tabName = window.location.hash.slice(1);
        $('#tabs').trigger('change.tabs', tabName);
    });
});
</script>
</body>
</html>
Javascript 相关文章推荐
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
jquery分页对象使用示例
Apr 01 Javascript
node.js下LDAP查询实例分享
Sep 30 Javascript
AngularJS入门教程之XHR和依赖注入详解
Aug 18 Javascript
很酷的星级评分系统原生JS实现
Aug 25 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
Iview Table组件中各种组件扩展的使用
Oct 20 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
js实现简单分页导航栏效果
Jun 28 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
js数组的操作详解
Mar 27 #Javascript
jquery获取tr中控件值并操作tr实现思路
Mar 27 #Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 #Javascript
JS删除数组元素的函数介绍
Mar 27 #Javascript
jquery struts 验证唯一标识(公用方法)
Mar 27 #Javascript
Json对象与Json字符串互转(4种转换方式)
Mar 27 #Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 #Javascript
You might like
新版PHP极大的增强功能和性能
2006/10/09 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python for循环与range函数的使用详解
2019/03/23 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
如何利用Python识别图片中的文字
2020/05/31 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
任意存:BOXFUL
2018/05/21 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
《临死前的严监生》教学反思
2014/02/13 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
幼儿园开学寄语
2014/04/03 职场文书
家长通知书教师评语
2014/04/17 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
领导班子整改措施
2014/10/24 职场文书
邀请函模板
2015/02/02 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers