JQ实现选项卡(jQuery原型插件扩展)
下边分为两个版本,一种是点击切换选项(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原型插件扩展)的更多相关文章
- jQuery的noConflict以及插件扩展
一.noConflict函数 JavaScript有很多插件,如果jQuery对象的$与其他插件冲突,我们可以使用noConflict()方法去掉$或者使用其他的符号代替 注:noConflict() ...
- 利用jQuery对插件进行扩展时,方法$.extend()、$.fn.extend()区别与联系
利用JQ开发插件的方法: 1.jQuery.extend(); 2.jQuery.fn.extend(); 3.通过$.widget()应用jQuery UI的部件工厂方式创建. 由于第三种方式通 ...
- jquery自定义插件——以 选项卡插件为例
一直打算尝试自定义插件,终于付诸实践了,现在把内容发表出来,与大家共勉. 我是根据自己正在用的插件,模仿其源码,实现的自定义插件,完成之后,在网上看相关资料,对自定义插件部分,有了更明确的认识. jq ...
- aspx中的表单验证 jquery.validate.js 的使用 以及 jquery.validate相关扩展验证(Jquery表单提交验证插件)
这一期我们先讲在aspx中使用 jquery.validate插件进行表单的验证, 关于MVC中使用 validate我们在下一期中再讲 上面是效果,下面来说使用步骤 jQuery.Valid ...
- jQ效果:jQuery时间轴插件jQuery Timelinr
前言 这是一款可用于展示历史和计划的时间轴插件,尤其比较适合一些网站展示发展历程.大事件等场景.该插件基于jQuery,可以滑动切换.水平和垂直滚动.支持键盘方向键.经过扩展后可以支持鼠标滚轮事件. ...
- jQuery插件扩展方法
jQuery为扩展插件提拱了两个方法,分别是: jQuery.extend(object) —— 给jQuery对象添加方法. jQuery.fn.extend(object) —— 为扩展jQuer ...
- jQuery插件扩展extend的实现原理
相信每位前端的小伙伴对jQuery都不陌生吧,它最大的魅力之一就是有大量的插件,去帮助我们更轻松的实现各种功能. 前几天晚上,闲来无事,就自己动手写了个简单的jQuery插件,功能很简单,只是让选定的 ...
- jQuery笔记之工具方法extend插件扩展
jQuery工具方法 $.extend()插件扩展(工具方法) $.fn.extend()插件扩展(实例方法) 浅度克隆.深度克隆 两个方法基本是一样的,唯一不同的就是调用方式不一样 -------- ...
- jQuery 第九章 工具方法之插件扩展 $.extend() 和 $.fn.extend()
$.extend() $.fn.extend() -------------------------------------------------- $.extend() 插件扩展(工具方法) jq ...
随机推荐
- 上下文切换查看 & sar
怀疑CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b.sar -u和 sar-d来看 sar –W 查看页面交换发生状况 [root@localhost ~] ...
- OCP-1Z0-051-题目解析-第27题
27. Which two statements are true regarding tables? (Choose two.) A. A table name can be of any len ...
- jQuery11 data() : 数据缓存
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- php中array_merge函数
php中array_merge函数 一.array_merge简介 (PHP 4, PHP 5, PHP 7) array_merge — 合并一个或多个数组 说明¶ array array_merg ...
- ElasticSearch 工作原理
ElasticSearch 工作原理图 文字说明,以后更新
- c# List集合学习
1---集合,可以理解成容器 泛型集合 非泛型集合2---使用集合用到的命名空间 using System.Collections.Generic;3---集合是如何来的?集合的前辈是数组,数组在内存 ...
- PHP foreach遍历数组之如何判断当前值已经是数组的最后一个
先给出foreach的两种语法格式 1,foreach (array_expression as $value) statement 2,foreach (array_expression as $k ...
- 一个一线城市的IT白领的生活成本:3万/年
自从大学毕业,经济独立,就开始全面统计各种生活开支.仔细的去统计下,发现开销还是挺大的. 定理:开销越大,就意味着你每个月的收入必须越高. 三族鼎立节余族: 收入-开支 > 0月光族:收入-开支 ...
- Hyperic
https://my.oschina.net/hyperichq/blog/525590
- 洛谷 P1506 拯救oibh总部
P1506 拯救oibh总部 题目背景 oibh总部突然被水淹没了!现在需要你的救援…… 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示 ...