下边分为两个版本,一种是点击切换选项(index.js),一种是滑过切换选项(index1.js)

HTML文件:

jq使用jquery-1.11.3.js版本

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>jQuery选项卡</title>
<link rel="stylesheet" href="css/reset.min.css"/>
<link rel="stylesheet" href="css/index.css"/>
</head>
<body>
<div class="container">
<!--<span class="select">选项一</span><span>选项二</span><span>选项三</span>-->
<ul class="tip clear">
<li class="cur">选项一</li>
<li>选项二</li>
<li>选项三</li>
</ul>
<div class="contain cur">页卡一</div>
<div class="contain">页卡二</div>
<div class="contain">页卡三</div>
</div>
<div class="container">
<!--<span class="select">选项一</span><span>选项二</span><span>选项三</span>-->
<ul class="tip clear">
<li class="cur">选项一</li>
<li>选项二</li>
<li>选项三</li>
</ul>
<div class="contain cur">页卡一</div>
<div class="contain">页卡二</div>
<div class="contain">页卡三</div>
</div>
<script src="js/jquery-1.11.3.js"></script>
<!--jQuery原型上扩展的插件-->
<script src="js/index.js"></script>
<script type="text/javascript">
/*$('.container').on('click', '.tip>li', function () {
$(this).addClass('cur').siblings().removeClass('cur')
.parent().siblings('.con').removeClass('cur')
.eq($(this).index()).addClass('cur');
});*/ //事件委托:利用事件冒泡传播机制
// 模拟选项卡的ajax请求 /*$('.tab>.tip>li').mouseover(function () {
var curIndex = $(this).index();
// $(this).addClass('cur').siblings().removeClass('cur')
// .parent().siblings('.contain')
// .eq(curIndex).addClass('cur')
// .siblings().removeClass('cur'); $(this).addClass('cur').siblings().removeClass('cur')
.parent().siblings('.contain')
.each(function (index, item) {
//->this:item
curIndex === index ? $(this).addClass('cur') : $(this).removeClass('cur');
});
});*/
</script>
</body>
</html>

 index.css

@charset "utf-8";
.container {
width: 600px;
height: 400px;
margin: 20px auto;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
} .container .tip li {
float: left;
width: 200px;
text-align: center;
line-height: 40px;
font-size: 18px;
background-color: lightblue;
cursor: pointer;
} .container .tip li.cur {
background-color: lightsteelblue;
} .container .contain {
display: none;
width: 600px;
height: 300px;
line-height: 300px;
font-size: 20px;
text-align: center;
background-color: lightsteelblue;
} .container .contain.cur {
display: block;
}

 reset.min.css代码:

body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,button,input,textarea,th,td{margin:0;padding:0}body{font-size:12px;font-style:normal;font-family:"\5FAE\8F6F\96C5\9ED1",Helvetica,sans-serif}small{font-size:12px}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4,h5,h6{font-size:100%}ul,ol{list-style:none}a{text-decoration:none;background-color:transparent}a:hover,a:active{outline-width:0;text-decoration:none}table{border-collapse:collapse;border-spacing:0}hr{border:0;height:1px}img{border-style:none}img:not([src]){display:none}svg:not(:root){overflow:hidden}html{-webkit-touch-callout:none;-webkit-text-size-adjust:100%}input,textarea,button,a{-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]),video:not([controls]){display:none;height:0}progress{vertical-align:baseline}mark{background-color:#ff0;color:#000}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}button,input,select,textarea{font-size:100%;outline:0}button,input{overflow:visible}button,select{text-transform:none}textarea{overflow:auto}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.clear:after{display:block;height:0;content:"";clear:both}

index.js代码:

$.fn.extend({
changeTab: function (index, type) {
//->this:current tab
index = index || 0;
type = type || 'click'; var $list = $(this).find('.tip>li'),
$contain = $(this).find('.contain'); //->select default
$list.removeClass('cur').eq(index).addClass('cur');
$contain.removeClass('cur').eq(index).addClass('cur'); //->click
var preIndex = index;
$(this).on(type, function (e) {
var tar = e.target,
$tar = $(tar),
tarTag = tar.tagName.toUpperCase(); //->TARGET IS TAB
if (tarTag === 'LI' && $tar.parent().hasClass('tip')) {
//->REMOVE
$list.eq(preIndex).removeClass('cur');
$contain.eq(preIndex).removeClass('cur'); //->ADD
var curIndex = $tar.index();
$tar.addClass('cur');
$contain.eq(curIndex).addClass('cur');
preIndex = curIndex;
}
});
}
});

// $('#tab1').changeTab(0, 'mouseover');
// $('#tab2').changeTab(2);
$('.container').each(function () {
$(this).changeTab();
});

index1.js代码:

$.fn.extend({
changeTab: function (index, type) {
$.each(this, function () {
//->this:current tab
index = index || 0;
type = type || 'click'; var $list = $(this).find('.tip>li'),
$contain = $(this).find('.contain'); //->select default
$list.removeClass('cur').eq(index).addClass('cur');
$contain.removeClass('cur').eq(index).addClass('cur'); //->click
var preIndex = index;
$(this).on(type, function (e) {
var tar = e.target,
$tar = $(tar),
tarTag = tar.tagName.toUpperCase(); //->TARGET IS TAB
if (tarTag === 'LI' && $tar.parent().hasClass('tip')) {
//->REMOVE
$list.eq(preIndex).removeClass('cur');
$contain.eq(preIndex).removeClass('cur'); //->ADD
var curIndex = $tar.index();
$tar.addClass('cur');
$contain.eq(curIndex).addClass('cur');
preIndex = curIndex;
}
});
});
}
}); // $('#tab1').changeTab(0, 'mouseover');
// $('#tab2').changeTab(2);
$('.container').changeTab(0, 'mouseover');

JQ实现选项卡(jQuery原型插件扩展)的更多相关文章

  1. jQuery的noConflict以及插件扩展

    一.noConflict函数 JavaScript有很多插件,如果jQuery对象的$与其他插件冲突,我们可以使用noConflict()方法去掉$或者使用其他的符号代替 注:noConflict() ...

  2. 利用jQuery对插件进行扩展时,方法$.extend()、$.fn.extend()区别与联系

      利用JQ开发插件的方法: 1.jQuery.extend(); 2.jQuery.fn.extend(); 3.通过$.widget()应用jQuery UI的部件工厂方式创建. 由于第三种方式通 ...

  3. jquery自定义插件——以 选项卡插件为例

    一直打算尝试自定义插件,终于付诸实践了,现在把内容发表出来,与大家共勉. 我是根据自己正在用的插件,模仿其源码,实现的自定义插件,完成之后,在网上看相关资料,对自定义插件部分,有了更明确的认识. jq ...

  4. aspx中的表单验证 jquery.validate.js 的使用 以及 jquery.validate相关扩展验证(Jquery表单提交验证插件)

    这一期我们先讲在aspx中使用 jquery.validate插件进行表单的验证, 关于MVC中使用 validate我们在下一期中再讲     上面是效果,下面来说使用步骤 jQuery.Valid ...

  5. jQ效果:jQuery时间轴插件jQuery Timelinr

    前言 这是一款可用于展示历史和计划的时间轴插件,尤其比较适合一些网站展示发展历程.大事件等场景.该插件基于jQuery,可以滑动切换.水平和垂直滚动.支持键盘方向键.经过扩展后可以支持鼠标滚轮事件. ...

  6. jQuery插件扩展方法

    jQuery为扩展插件提拱了两个方法,分别是: jQuery.extend(object) —— 给jQuery对象添加方法. jQuery.fn.extend(object) —— 为扩展jQuer ...

  7. jQuery插件扩展extend的实现原理

    相信每位前端的小伙伴对jQuery都不陌生吧,它最大的魅力之一就是有大量的插件,去帮助我们更轻松的实现各种功能. 前几天晚上,闲来无事,就自己动手写了个简单的jQuery插件,功能很简单,只是让选定的 ...

  8. jQuery笔记之工具方法extend插件扩展

    jQuery工具方法 $.extend()插件扩展(工具方法) $.fn.extend()插件扩展(实例方法) 浅度克隆.深度克隆 两个方法基本是一样的,唯一不同的就是调用方式不一样 -------- ...

  9. jQuery 第九章 工具方法之插件扩展 $.extend() 和 $.fn.extend()

    $.extend() $.fn.extend() -------------------------------------------------- $.extend() 插件扩展(工具方法) jq ...

随机推荐

  1. 最近遇到的若干Web前端问题:disable和readonly,JqueryEasyUI,KindEditor

    最近项目中用到了Jquery Easyui和KindEditor等框架组件,问题真不少啊~  一些看起来很简单理所当然的事情,竟然花费了不少时间,才解决好~  1.readonly和disable的区 ...

  2. SpringMVC框架的多表查询和增删查改

    必须声明本文章==>http://www.cnblogs.com/zhu520/p/7883268.html 一: 1):我的运行环境 我使用myeclipse(你也可以使用eclipse),t ...

  3. Unity容器实现自动注册

    如何创建Unity容器? 首先NuGet搜索Unity, 该示例中使用的版本为4.0.1 新建控制台程序 示例中使用常规操作, 创建一个IPay接口, 分别有两个实现类: ApplePay.Huawe ...

  4. 父类与子类的virtual

    父类加了virtual,子类不需要加virtual,多余.加了也不会报错. 父类中不是virtual,子类是virtual,那么父类中的不是虚函数,子类及子子类的派生类中该函数才是虚函数

  5. 转:向IOS设备发送推送通知

    背景 SMS 和 MMS 消息是由无线运营商通过设备的电话号码向特定设备提供的.实现 SMS/MMS 的服务器端应用程序的开发人员必须费大量精力才能与现有的封闭电信基础架构进行交互(其中包括获取电话号 ...

  6. uva103 - Stacking Boxes(DAG)

    题目:uva103 - Stacking Boxes(DAG) 题目大意:给出N个boxes, 而且给出这些箱子的维度.要求找一个最长的序列.可以使得以下的箱子一定可以有个维度序列大于上面的那个箱子的 ...

  7. Fragment-传递参数

    在关Fragment间参数的传递,有两种情况: 第一种情况:同一个container中不同fragment间的参数传递.这种情况一般发生在fragment跳转时,上一个Fragment将参数传递给下一 ...

  8. Java中的继承和接口

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 这是个老话题,继承和接口是实现多态的两种方式,如果对象很多,其中一对一对的有共同点,建议用继承,如果 ...

  9. Hibernate5配置与使用具体解释

    转载请注明出处:http://blog.csdn.net/tyhj_sf/article/details/51851163 引言 Hibernate是一个轻量级的持久层开源框架,它是连接java应用程 ...

  10. 使用TCP协议的NAT穿透技术 (转载)

    其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之. 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基 ...