Tab 插件(一)
前言
使用Jquery封装插件,使代码复用不需要每个功能重新编写代码只需修改传入参数。
jQuery 插件常见到有类开发 和对象开发模式, 在下边介绍两种模式使用,初次编写,有误拍砖。
jQuery 插件编写格式
;(function ($, win, undefined) {
// your code...
})(jQuery, window);
1、使用匿名函数避免与其它库冲突
2、未了避免问题,需要在插件的前后添加;(不影响程序运行)
类开发模式
结构如下
;(function ($, win, undefined) {
var Tab = function (ele, opt) {
this.$element = ele;
this.defaults = {
// 各种参数及属性
};
this.options = $.extend({}, this.defaults, opt);
};
Tab.prototype = {
tabInit: function () {
var _self = this;
return this.$element.each(function () {
// 逻辑处理
})
}
}
})(jQuery, window)
$.fn.tabPlugin = function(options){
var tabClass = new Tab(this, options);
return tabClass.tabInit();
}
$.fn.tabPlugin 这个 tabPlugin 是插件名字(可以任意改名)
this.options = $.extend({}, this.defaults, opt); 将this.defaults和opt对象合并一个对象到{}中。直接使用this.options是两个对象整合
this.$element.each 是变量该对象。。
return this.$element.each(function () {} return 可以加,也可以不加。添加为了实现jquery串连调用
HTML部分
<div class="tab">
<ul class="tab_nav">
<li class="current">tab1</li>
<li>tab2</li>
<li>tab3</li>
</ul>
<div class="tab_content">
<div style="display:block;">html</div>
<div>css</div>
<div>js</div>
</div>
</div>
css部分
ul li {
list-style: none;
float: left;
overflow: hidden;
border: 1px solid #333;
margin: 0 10px;
padding: 0 10px;
text-align: center;
color: #333;
}
.tab_content > div {
display: none;
border: 1px solid #333;
}
.current {
background: #333;
color: #fff;
}
插件部分
;
(function ($, win, undefined) {
var Tab = function (ele, opt) {
this.$element = ele;
this.defaults = {
// 各种参数及属性
};
this.options = $.extend({}, this.defaults, opt);
};
Tab.prototype = {
tabInit: function () {
var _self = this;
// ----
return this.$element.each(function () {
// 逻辑处理
var _this = $(this);
_this.find('.tab_nav>li').click(function () {
$(this).addClass('current').siblings().removeClass('current'); var index = $(this).index();
_this.find('.tab_content>div').eq(index).show().siblings().hide();
});
})
// ----
}
}; $.fn.tabPlugin = function (options) {
var tabClass = new Tab(this, options);
return tabClass.tabInit();
}
})(jQuery, window);
红线中间注解是主要关注功能
javascript调用插件
$(function () {
$('.tab').tabPlugin();
})
以上以实现选项卡功能,会发现如果在其它地方也使用 ,还的改 “类名” 插件中红色字体部分。
解决参数传入

在 this.defaults= {} 初始化默认参数,在下图中使用:

这些红色 框框,需要 “”变成“” 可以配置,其它地方也可以使用。
功能代码

这里使用了 var _self = this; 这里的this指向该类对象, 通过_self.options.属性来获取参数
$(function () {
var def = {
eventType: 'mouseover'
}
$('.tab').tabPlugin(def);
})
参数传入 mouseover时,就会更改事件,其它参数也是一样的。这样改其来是不是很方便。
对象模式开发
结构如下
(function ($, win, undefined) {
$.fn.tab = function (options) {
var defaults = {
//各种参数,各种属性
};
var options = $.extend({}, defaults, options);
this.each(function () {
//各种功能
});
return this;
}
})(jQuery, window);
在each下对功能处理

处理方式跟之前是一样的,只是在结构上有所不通,功能是一样的

代码
;(function ($, win, undefined) {
$.fn.tab = function (options) {
var defaults = {
currentClass: 'current',
tabNav: '.tab_nav>li',
tabContent: '.tab_content>div',
eventType: 'click'
};
var options = $.extend({}, defaults, options);
this.each(function () {
var _this = $(this);
_this.find(options.tabNav).on(options.eventType, function () {
$(this).addClass(options.currentClass).siblings().removeClass(options.currentClass);
var index = $(this).index();
_this.find(options.tabContent).eq(index).show().siblings().hide();
})
});
return this;
}
})(jQuery, window);
Tab 插件(一)的更多相关文章
- 用jquery编写的tab插件
用jquery编写的tab插件 源码 $.fn.ss_tab = function (options) { var box = $(this); var btns = $(this).find(&qu ...
- 20 个最棒的 jQuery Tab 插件
jQuery Tab 常用来做网页上的选项设置界面和导航,本文向你推荐最棒的 20 个 jQuery Tab 插件.Enjoy !! 1. Slider Tabs SliderTabs 是一个可定制的 ...
- 用bootstrap的tab插件做一个图层切换效果(感觉会误导淫们,大家当乐子看吧)
小伙伴们啊,我JS真的是个渣渣,所以总想要偷懒,于是为了实现效果就把tab插件给改了(各位大神轻拍啊,我是小白,很纯洁滴,小心脏也很脆弱)…… 最近做的项目为了考虑以后的移动设备兼容性,所以用了Boo ...
- 学会自己写jQuery插件(二)---自己写的tab插件
通过上一个基础篇我们知道插件的格式,这次我来写一个tab插件 $(function() { $.fn.插件名称 = function(options) { var defaults = { Event ...
- 给大家分享一个jQuery TAB插件演示
jquery tab选项卡插件示例页面代码,使用jquery.tabs.js轻量级的tab选项卡插件来实现,并支持鼠标滑过.点击.自动切换.数据回调等功能,有的是点击切换,有的是鼠标滑过切换,自带了多 ...
- Bootstrap tab插件的使用
菜鸟教程链接:http://www.runoob.com/bootstrap/bootstrap-tab-plugin.html 1.例子 <!DOCTYPE html> <html ...
- jQuery 插件分享-非常优秀的tab插件tabulous- 学徒帮
干货jquery插件分享之tab. tab 选项卡切换,在日常开发中也是一种比较常见的呈现控件,今天这个tab控件效果还是蛮喜欢的,推荐给大家有用到的场景可以试试: tabulous.js A jQu ...
- Bootstrap标签页(Tab)插件事件
事件 下表列出了标签页(Tab)插件中要用到的事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.tab 该事件在标签页显示时触发,但是必须在新标签页被显示之前.分别使用 even ...
- Bootstrap标签页(Tab)插件
标签页(Tab)在Bootstrap导航元素一章中简介过,通过结合一些data属性,您可以轻松地创建一些标签页界面.通过这个插件您可以把内容放置在标签页或胶囊式标签页甚至是下拉菜单标签页中. 用法 您 ...
随机推荐
- Luogu 3267 [JLOI2016/SHOI2016]侦察守卫
以后要记得复习鸭 BZOJ 4557 大佬的博客 状态十分好想,设$f_{x, i}$表示以覆盖完$x$为根的子树后还能向上覆盖$i$层的最小代价,$g_{x, i}$表示以$x$为根的子树下深度为$ ...
- 使用java以及jdbc不使用第三方库执行sql文件脚本
使用java以及jdbc不使用第三方库执行sql文件脚本 2017年02月15日 15:51:45 阅读数:660 使用java执行sql脚本的方法 解析sql脚本,删除不必要的注释和空行 将语句按分 ...
- MySQL数据库简介
数据库就是数据的集合. 关系数据库是一种特殊的数据库,它将数据组织成表,并表示为表之间的关系. 数据库系统往往是大型项目的核心数据内容,如银行的用户账户信息.腾讯的QQ用户账户信息.股市的各种交易信息 ...
- 2013年第四届蓝桥杯国赛 九宫重排(HashMap+双BFS优化)
九宫重排 时间限制:1.0s 内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干 ...
- 删除iCloud手机备份
问题描述 系统9.3.5提示iCloud空间即将满,遂清理一下,发现空间主要被备份文件占用,于是想着删除备份文件,但是手机中的清理iCloud列表中并未找到相关备份文件.最终通过Mac电脑中的iClo ...
- HTML完全使用详解 PDF扫描版
<HTML完全使用详解>根据网页制作的实际特点和目前市场需要,全面系统地介绍了最新的HTML4.01.丰富的实例贯穿全书,能帮助您全面掌握HTML,而且本书所有实例均可直接修改使用,可以提 ...
- python web框架(bottle,flask,tornado)
Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip i ...
- (multi)set的某些操作
(multi)set的某些操作 我们可以把multiset当作平衡树用~ 注意,必须定义小于运算符. s.begin() 返回指向第一个元素的迭代器. s.end() 返回指向最后元素的后面那个虚拟元 ...
- Django / Python 链接MySQL数据库
https://www.cnblogs.com/wupeiqi/articles/5237704.html python (Django)中使用MySQL 首先python3中没有 MySQLdb 需 ...
- P2387 [NOI2014]魔法森林 LCT维护最小生成树
\(\color{#0066ff}{ 题目描述 }\) 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 ...
