前言

使用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 插件(一)的更多相关文章

  1. 用jquery编写的tab插件

    用jquery编写的tab插件 源码 $.fn.ss_tab = function (options) { var box = $(this); var btns = $(this).find(&qu ...

  2. 20 个最棒的 jQuery Tab 插件

    jQuery Tab 常用来做网页上的选项设置界面和导航,本文向你推荐最棒的 20 个 jQuery Tab 插件.Enjoy !! 1. Slider Tabs SliderTabs 是一个可定制的 ...

  3. 用bootstrap的tab插件做一个图层切换效果(感觉会误导淫们,大家当乐子看吧)

    小伙伴们啊,我JS真的是个渣渣,所以总想要偷懒,于是为了实现效果就把tab插件给改了(各位大神轻拍啊,我是小白,很纯洁滴,小心脏也很脆弱)…… 最近做的项目为了考虑以后的移动设备兼容性,所以用了Boo ...

  4. 学会自己写jQuery插件(二)---自己写的tab插件

    通过上一个基础篇我们知道插件的格式,这次我来写一个tab插件 $(function() { $.fn.插件名称 = function(options) { var defaults = { Event ...

  5. 给大家分享一个jQuery TAB插件演示

    jquery tab选项卡插件示例页面代码,使用jquery.tabs.js轻量级的tab选项卡插件来实现,并支持鼠标滑过.点击.自动切换.数据回调等功能,有的是点击切换,有的是鼠标滑过切换,自带了多 ...

  6. Bootstrap tab插件的使用

    菜鸟教程链接:http://www.runoob.com/bootstrap/bootstrap-tab-plugin.html 1.例子 <!DOCTYPE html> <html ...

  7. jQuery 插件分享-非常优秀的tab插件tabulous- 学徒帮

    干货jquery插件分享之tab. tab 选项卡切换,在日常开发中也是一种比较常见的呈现控件,今天这个tab控件效果还是蛮喜欢的,推荐给大家有用到的场景可以试试: tabulous.js A jQu ...

  8. Bootstrap标签页(Tab)插件事件

    事件 下表列出了标签页(Tab)插件中要用到的事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.tab 该事件在标签页显示时触发,但是必须在新标签页被显示之前.分别使用 even ...

  9. Bootstrap标签页(Tab)插件

    标签页(Tab)在Bootstrap导航元素一章中简介过,通过结合一些data属性,您可以轻松地创建一些标签页界面.通过这个插件您可以把内容放置在标签页或胶囊式标签页甚至是下拉菜单标签页中. 用法 您 ...

随机推荐

  1. Entity Framework Tutorial Basics(22):Disconnected Entities

    Disconnected Entities: Before we see how to perform CRUD operation on disconnected entity graph, let ...

  2. css中设置div水平居中,margin:0px auto没用的情况

    在CSS中加了margin:0px auto;却没有效果,不能实现居中的问题!margin:0px auto;意思就是:上下边界为0,左右根据宽度自适应!就是水平居中的意思.无效的原因是,当你没有设置 ...

  3. Hibernate 处理查询 in 字句

    from : http://blog.csdn.net/wodestudy/article/details/38200421 在处理hibernate的实体查询,一般可以采用多种方式处理复杂的查询,比 ...

  4. 【LeetCode】 Longest Common Prefix

    Longest Common Prefix Write a function to find the longest common prefix string amongst an array of ...

  5. linux文件字符集转换(utf8-gb2312)

    一,命令行 在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码. iconv命令用法如下:iconv [选项...] [文件...] 1. ...

  6. Spring Boot 学习系列(05)—自定义视图解析规则

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...

  7. 本地机器和windows2003远程桌面之间复制粘贴文件

    打开远程桌面连接-->选项-->本地资源-->磁盘驱动器 前面打勾然后再连接就可以了.

  8. VirtualBox 5.0(虚拟机软件)里,安装Fedora遇到的问题!!

    问题一: 安装完毕后,重新启动竟然还是进入了Fedora安装过程里. 问题原因:Fedora,并没有处理安装时候加载的ISO文件,依旧让VirtualBox 5.0运行它. 解决方法:在运行Fedor ...

  9. Use Vim as a Python IDE

    Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugi ...

  10. loj #2025. 「JLOI / SHOI2016」方

    #2025. 「JLOI / SHOI2016」方   题目描述 上帝说,不要圆,要方,于是便有了这道题. 由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形.上帝把我们派到了一个有 NNN ...