JQ实现选项卡(jQuery原型插件扩展)

时间:2022-05-24 10:54:43

下边分为两个版本,一种是点击切换选项(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对插件进行扩展时,方法&dollar;&period;extend&lpar;&rpar;、&dollar;&period;fn&period;extend&lpar;&rpar;区别与联系

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

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

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

  4. aspx中的表单验证 jquery&period;validate&period;js 的使用 以及 jquery&period;validate相关扩展验证&lpar;Jquery表单提交验证插件&rpar;

    这一期我们先讲在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 第九章 工具方法之插件扩展 &dollar;&period;extend&lpar;&rpar; 和 &dollar;&period;fn&period;extend&lpar;&rpar;

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

随机推荐

  1. Yii源码阅读笔记(三十四)

    Instance类, 表示依赖注入容器或服务定位器中对某一个对象的引用 namespace yii\di; use Yii; use yii\base\InvalidConfigException; ...

  2. 纯手写SpringMVC架构,用注解实现springmvc过程

    1.第一步,首先搭建如下架构,其中,annotation中放置自己编写的注解,主要包括service controller qualifier RequestMapping 第二步:完成对应的anno ...

  3. 关于listview视图的 作业

    代码运行目录 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=& ...

  4. &lbrack;HDOJ5510&rsqb;Bazinga(并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 普通集合会tle,换高贵的并查集. #include <algorithm> #in ...

  5. ASP&period;NET MVC&plus;Bootstrap个人博客之praise&period;js点赞特效插件&lpar;二&rpar;

    1. 为啥要做这个点赞插件?    praise.js是一款小巧的jQuery点赞插件,使用简便,效果美观. 在做个人博客时遇到了文章点赞问题.联想到各大社交网络中的点赞特效:手势放大.红心放大等等, ...

  6. ios获取当前语言

    上代码: + (NSString*)getPreferredLanguage { NSUserDefaults * defaults = [NSUserDefaults standardUserDef ...

  7. Parameters

    Quote from: http://ss64.com/nt/syntax-args.html Parameters A parameter (or argument) is any value pa ...

  8. 初窥struts2&lpar;二&rpar;OGNL表达式

    Struts2总结 Struts2完整的处理流程: 1  客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2  Filter控制器进行请求过滤 ...

  9. EF中的事务处理的初步理解

    http://yanwushu.byethost7.com/?p=87 1. EF对事务进行了封装:context的saveChange()是有事务性的. 2. 依赖多个不同的Context的操作(即 ...

  10. 关键字(5):cursor游标:&lpar;循环操作批量数据&rpar;

    declare   cursor stus_cur is select * from students;  --定义游标并且赋值(is 不能和cursor分开使用)    cur_stu studen ...