iTabs Tab切换插件
最近项目中使用到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&id=6927" data-fun="updateCustom" href="javascript:void(0)">1 详细信息</a> </li>
<li>
<a class="" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/quoted/services&id=6927" data-fun="quotedServices" href="javascript:void(0)">2 服务报价单</a> </li>
<li>
<a class="" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/contract/services&id=6927" data-fun="createContract" href="javascript:void(0)">3 生成合同</a> </li>
<li>
<a class="selected" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/contract/upload&id=6927" data-fun="uploadContract" href="javascript:void(0)">4 上传合同</a> </li>
<li>
<a class="shop-add" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/custom/addShop&id=6927" data-fun="createShop" href="javascript:void(0)">5 添加店铺</a> </li>
<li>
<a class="order-send" data-url="/oa/branches/v2.0.0.0/index.php?r=sales/argumentProducer/order&id=6927" data-fun="sendOrder" href="javascript:void(0)">6 发送工单</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切换插件的更多相关文章
- 一个小的tab切换插件
1//使用 var t1=new Tab({ etype:'onmou',//默认点击触发,如果事件写错了,当作单击 autoplay:2000,//有时间值(按照事件自动播放)和false(不自动播 ...
- 编写tab切换插件
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- tab切换插件开发
我开发的tab切换插件,基于jquery库,实现tab标签页的切换.插件的名称为jquery.tabSwitch.js. 插件实现代码如下: ; (function ($) { $.fn.tabSwi ...
- swiper插件遇上tab切换
当swiper插件遇到tab切换,即display的显示与否属性时,失效,方法如下: <script language="javascript"> var mySwip ...
- 前端tab切换 和 validatejs表单验证插件
一.tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- jquery TAB切换小插件
//tab切换 ;(function($, window, document, undefined) { $.fn.tab = function(options) { var defaults = { ...
- 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab
解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...
- jq 折面板+tab切换(自己封装的插件哦!!)
如上图所示的一个折面板效果+tab切换:最重要的js代码如下: 对于布局简单介绍下: hot_wrap_li 这个是带箭头的横条: Arrow 这个是箭头的div:hot_wrap_li_wrap 这 ...
- 自己编写jQuery插件之Tab切换
自己编写jQuery插件之 Tabs切换 jquery ui 带有Tabs切换插件,但其css样式太难维护,引用的东西太多,因此就自己写了个. 起初我Html代码架子是这样的: <div cla ...
随机推荐
- HBase1.2.6 预分区后,数据不进入预定分区的一个 bug
rowkey 如下: 19000015115042900001511504390000151150449000015115045900001511504690000151150479000015115 ...
- oracle同一个库上面,不同用户相互赋予权限
用法: 有两个用户:user1和user2,都是在库TEST上,分别有表user1.table1,user2.table2 但是用user1登录的时候,user2上表就不能用,此时就可以使用grant ...
- jvm学习(重点)
http://blog.csdn.net/yfqnihao/article/details/8271665 http://blog.csdn.net/cutesource/article/detail ...
- JS正则表达式从入门到入土(10)—— 字符串对象方法
字符串对象方法 search方法 String.prototype.search(reg) search方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,方法返回第一个匹配结果的 ...
- 在DLL编程中,导出函数为什么需要extern "C"
转自:http://blog.csdn.net/zhongjling/article/details/8088664 一般来讲,在DLL编程过程中,对于导出的函数前 都需要加入 extern “C”, ...
- ashx 方法模板
; ); //查询字符串拼接 string searchparams = DTRequest.GetQueryString("jsonstring"); fooddetail mo ...
- WebAPI请求——js调用
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用jQuery 来发起异步请求实现 ...
- 20145310 《Java程序设计》第6周学习总结
20145310 <Java程序设计>第6周学习总结 教材学习内容总结 本周主要进行第十章和第十一章的学习. 第十章 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流 ...
- Job流程:Shuffle详解
此文承接Job流程:Mapper类分析.MapReduce为确保每个reducer的输入都按键排序,数据从map输出到reducer输入的这段过程成为Shuffle. map端 1).Spill溢写. ...
- sql 取前一年、月
SQL SERVER 提供了一些时间函数:取当前时间:SELECT GETDATE() 取前一个月的时间:SELECT DATEADD(MONTH,-1,GETDATE()) 月份减一个月取年份:SE ...