最近项目中使用到Tab切换,切换的页面不变,内容发生变化,随手写了份简单的插件,附带源码。先看样子:

本人也考虑到是否使用jquery ui tab,但是还是热衷于自己写一份,首先好处之一是易于培训,要培训整个jquery ui还是比较累的。

源码很简单,只是为上面的dom树绑定了点击事件而已。

源码如下:

/**
* JQuery Tabs
* created by oShine
*/
(function ($) { var Tabs = function (dom, events) {
this.dom = dom;
this.events = events; this.init();
}; Tabs.prototype = {
init: function () {
this.bindEvent();
$(this.dom).find(".tags >ul li a.selected").trigger("click");
},
bindEvent: function () { var self = this; $(this.dom).find(".tags >ul li a").click(function (event) { $(self.dom).find(".tags >ul li a.selected").removeClass("selected");
$(this).addClass("selected"); $(self.dom).find(".filter").hide();
if ($(this).attr("data-filter") !== undefined) {
$(self.dom).find($(this).attr("data-filter")).show();
} var fn = $(this).attr("data-fun") !== undefined && typeof self.events[$(this).attr("data-fun")] == "function" ? self.events[$(this).attr("data-fun")] : undefined;
var ajaxUrl = $(this).attr('data-url') !== undefined ? $(this).attr('data-url') : undefined;
if (fn && ajaxUrl) { $.get(ajaxUrl, {}, function (resp) {
$(self.dom).find(".content").html(resp);
fn($(self.dom));
}); } else if (fn) {
fn($(self.dom)); } else if (ajaxUrl) {
$.get(ajaxUrl, {}, function (resp) {
$(self.dom).find(".content").html(resp);
});
} else {
console.log("no function");
} return false;
}); }
}; $.fn.extend({
iTabs: function (events) {
var iTabs = new Tabs($(this), events);
return iTabs;
}
}); })($);

应用如下:

<div class="nav tab-container">
<div class="tab-header">
<div class="tags">
<ul>
<li class="back-header">
<a class="back-btn" data-fun="back" href="javascript:void(0)"></a> </li>
<li>
<a class="" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/custom/update&amp;id=6927" data-fun="updateCustom" href="javascript:void(0)">1 &nbsp; 详细信息</a> </li>
<li>
<a class="" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/quoted/services&amp;id=6927" data-fun="quotedServices" href="javascript:void(0)">2 &nbsp; 服务报价单</a> </li>
<li>
<a class="" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/contract/services&amp;id=6927" data-fun="createContract" href="javascript:void(0)">3 &nbsp; 生成合同</a> </li>
<li>
<a class="selected" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/contract/upload&amp;id=6927" data-fun="uploadContract" href="javascript:void(0)">4 &nbsp; 上传合同</a> </li>
<li>
<a class="shop-add" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/custom/addShop&amp;id=6927" data-fun="createShop" href="javascript:void(0)">5 &nbsp; 添加店铺</a> </li>
<li>
<a class="order-send" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/argumentProducer/order&amp;id=6927" data-fun="sendOrder" href="javascript:void(0)">6 &nbsp; 发送工单</a> </li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="content">
</div>
</div>
</div>

看到每一个a上面有 data-url和data-fun的属性没有,该插件就是有一个好处,如果有 data-url的属性会ajax请求该url,并把内容填充到content 元素中,再执行data-fun定义的js function。

js如下:

$(document).ready(function(){
var config = {};
config.sendOrder = function(){};
.....
$(".tab-container").iTabs(config);
});

iTabs Tab切换插件的更多相关文章

  1. 一个小的tab切换插件

    1//使用 var t1=new Tab({ etype:'onmou',//默认点击触发,如果事件写错了,当作单击 autoplay:2000,//有时间值(按照事件自动播放)和false(不自动播 ...

  2. 编写tab切换插件

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  3. tab切换插件开发

    我开发的tab切换插件,基于jquery库,实现tab标签页的切换.插件的名称为jquery.tabSwitch.js. 插件实现代码如下: ; (function ($) { $.fn.tabSwi ...

  4. swiper插件遇上tab切换

    当swiper插件遇到tab切换,即display的显示与否属性时,失效,方法如下: <script language="javascript"> var mySwip ...

  5. 前端tab切换 和 validatejs表单验证插件

    一.tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. jquery TAB切换小插件

    //tab切换 ;(function($, window, document, undefined) { $.fn.tab = function(options) { var defaults = { ...

  7. 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab

    解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...

  8. jq 折面板+tab切换(自己封装的插件哦!!)

    如上图所示的一个折面板效果+tab切换:最重要的js代码如下: 对于布局简单介绍下: hot_wrap_li 这个是带箭头的横条: Arrow 这个是箭头的div:hot_wrap_li_wrap 这 ...

  9. 自己编写jQuery插件之Tab切换

    自己编写jQuery插件之 Tabs切换 jquery ui 带有Tabs切换插件,但其css样式太难维护,引用的东西太多,因此就自己写了个. 起初我Html代码架子是这样的: <div cla ...

随机推荐

  1. ISAP模板

    #include<bits/stdc++.h> using namespace std; using namespace std; typedef long long ll; const ...

  2. H5 播放视频常见bug及解决方案

    本文摘自:本文来自“小时光茶社(Tech Teahouse)”公众号 原文:https://mp.weixin.qq.com/s/MM5ZwCiWLAeHalsNYMImnw 1. 自动播放问题 通过 ...

  3. php 输出 sql语句

    第一种方法 $data = M('news')->field("title,date_format(postdate,'%Y-%m-%d') as postdate,content&q ...

  4. Send2MyKindle使用说明文档

    软件下载地址为:Send2MyKindle 功能简介 该软件主要功能为在Windows下将Kindle电子书发送到亚马逊中国网站注册的Kindle账户.整个软件界面如下图所示: 使用步骤 使用前的准备 ...

  5. 20145310《Java程序设计》第3周学习总结

    20145310 <Java程序设计>第3周学习总结 教材学习内容总结 本周学习内容比较多,主要是第四第五章的学习. 第四章 类与对象 类是对象的设计图,对象是类的实例. 类(Class) ...

  6. RocEDU.阅读.写作《苏菲的世界》书摘(五)

    在谈到如何获取确实的知识时,当时许多人持一种全然怀疑的论调,认为人应该接受自己一无所知事实.但笛卡尔却不愿如此.他如果接受这个事实,那他就不是一个真正的哲学家了.他的态度就像当年苏格拉底不肯接受诡辩学 ...

  7. 临时变量不能作为非const引用

    转自:http://blog.csdn.net/u011068702/article/details/64443949 1.看代码 2.编译结果 3.分析和解决 就拿f(a + b)来说,a+b的值会 ...

  8. Tomcat access log配置(二)

    前次讨论了spring boot 中添加Tomcat access log 是轻松愉快,配置文件中添加server.tomcat.accesslog即可,那么如果是外置的Tomcat容器又该如何配置呢 ...

  9. Excel导出失败的提示

    未处理System.InvalidCastException HResult=-2147467262 Message=无法将类型为“Microsoft.Office.Interop.Excel.App ...

  10. javascript的函数,定义

    函数 function       A               ()          { }函数体开头    函数名    传入的参数     方法 <button onclick=&qu ...