JS-【同页面多次调用】tab选项卡封装
这两天遇到一个页面,同一个页面中同一个特效会用好多次,比如tab,比如轮播等。我又不想很不负责任的复制一遍代码,那样页面臃肿,自己心里也堵得慌。于是就想着把代码封装起来多次调用。
对于封装,只在公开课看过一个老师操作,自己也是啥也不懂得。
好歹最后在群里大神的指导下,一步一步的由简致难完善了。就上最后的版本吧,中间的迭代版,,也只是方便以后封装其他的话参考用。
最后的总结就是,一口吃不成个胖子,我前两天一直想的是封装起来,就从最难的代码开始捣鼓,捣鼓半天把自己都绕晕了。程序这回事,你思路比电脑清楚,首先就应该想的比电脑还简单,然后再绕线升级。一上来就打大boss的游戏,什么装备和技能都还没攒,你不死谁死。
html:
<div class="aTapWrap aboutA_P" id="aTapWrap">
<ul id="aTapHeadWrap">
<li class="tapActiveLi">关于我们</li>
<li>
联系方式</li>
<li>
意见建议</li>
</ul>
<div class="aTapWrapS" id="aTapWrapS">
<div>
<p>文字1</p>
</div>
<div class="hide">
<p>文字2</p>
</div>
<div class="hide">
<p>文字3</p>
</div>
</div>
</div>
<div class="aTapWrap aboutA_P" id="aTapWrap2">
<ul id="aTapHeadWrap2">
<li class="tapActiveLi">关于我们</li><li>
联系方式</li><li>
意见建议</li>
</ul>
<div class="aTapWrapS" id="aTapWrapS2">
<div>
<p>文字1</p>
</div>
<div class="hide">
<p>文字2</p>
</div>
<div class="hide">
<p>文字3</p>
</div>
</div>
</div>
js:
<script type="text/javascript">
window.onload = function(){
function For(c,d){
for(var i = 0; i < c.length; i++) {
c[i].index = i;
c[i].onclick = function(e) {
for(var j = 0; j < c.length; j++) {
c[j].className = "";
d[j].className = "hide";
}
this.className = "tapActiveLi";
d[this.index].className = "";
}
}
}
function tab(a,b){
var aLi = document.getElementById(a).getElementsByTagName('li');
var aDiv = document.getElementById(b).getElementsByTagName('div');
For(aLi,aDiv)
};
tab('aTapHeadWrap','aTapWrapS');
tab('aTapHeadWrap2','aTapWrapS2'); }
</script>
css:
<style type="text/css">
.hide {
display: none;
} li {
list-style: none;
display: inline-block;
background-color: #90EE90;
} .tapActiveLi {
background-color: #FF7F50;
} div {
border: 1px solid #f00;
} .aTapWrap {
border: none;
}
</style>
ps:这个没有阻止冒泡,话说要不要阻止?我也不知道。大神说看着烦,让我把冒泡删了,我再加一个版本吧。
js:
window.onload = function() {
function For(c, d) {
function stopPropagation(e) {
e = e || window.event;
if(e.stopPropagation) { //W3C阻止冒泡方法
e.stopPropagation();
} else {
e.cancelBubble = true; //IE阻止冒泡方法
}
};
for(var i = 0; i < c.length; i++) {
c[i].index = i;
c[i].onclick = function(e) {
stopPropagation(e)
for(var j = 0; j < c.length; j++) {
c[j].className = "";
d[j].className = "hide";
}
this.className = "tapActiveLi";
d[this.index].className = "";
}
}
} function tab(a, b) {
var aLi = document.getElementById(a).getElementsByTagName('li');
var aDiv = document.getElementById(b).getElementsByTagName('div');
For(aLi, aDiv)
};
tab('aTapHeadWrap', 'aTapWrapS');
tab('aTapHeadWrap2', 'aTapWrapS2');
}
2017-04-18 14:35:13 再加一个jq版本的
function tab(menus, conts) {
$(menus).click(function() {
var index = $(this).index();
$(this).addClass("on").siblings().removeClass("on");
$(conts).eq(index).removeClass("hide").siblings().addClass("hide");
})
}
tab(".zsContMenu li", ".zsCont div")
tab(参数1,参数2),
参数1:就是用选择器定位到用来切换的几个标签,
参数2:就是用选择器定位到需要对应标签展示的内容块
以下是对应jq版本的html结构
<div class="zsContWrap">
<!--横向菜单-->
<ul class="zsContMenu clearfix">
<li class="on"><a href="javascript:;">标签1</a></li>
<li><a href="javascript:;">标签2</a></li>
</ul>
<!--切换内容-->
<div class="zsCont">
<!--标签1 对应展示 内容-->
<div> </div>
<!--标签2 对应展示内容-->
<div class="hide">
</div>
</div>
</div>
class名字解释
on:选中状态时标签的样式
hide{display:none;}/*特别注意,样式的优先级*/
————————————————————
【这个可以多次调用,调用时,就多写一个tab()就好了,括号里的两个参数换掉成最新的结构的class样式名字,】
声明:
请尊重博客园原创精神,转载或使用图片请注明:
博主:xing.org1^
出处:http://www.cnblogs.com/padding1015/
JS-【同页面多次调用】tab选项卡封装的更多相关文章
- js基础练习一之tab选项卡
最近在学习前端,当然包括js,css,html什么的,在听课时做的一些小练习,记录下来: 实例一: --Tab选项卡-- <script type="text/javascript&q ...
- 原生js实现tab选项卡里内嵌图片滚动特效代码
<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...
- js 实现tab选项卡
最近一直在研究js 如果不及时复习的话前边学到的东西很快就会忘掉,所以把前段时间的一个简单的tab选项卡的思路写出来也算复习了一下吧, 第一步:先把布局写出来: <div id="d ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
- Selenium with Python 005 - 调用js操作页面元素
WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...
- 纯js实现网页tab选项卡切换效果
纯js实现网页tab选项卡切换效果 百度搜索 js 点击菜单项就可以切换内容的效果
- tab选项卡切换(js原生、jQuery )
思路: ① 遍历Tab选项 ② 然后给每个Tab选项绑定点击事件 ③ 每次点击时清除所有Tab选项及Tab选项内容的样式,然后给当前Tab选项添加标记样式,给当前Tab选项添加显示样式 <!DO ...
- mui在tab选项卡中echarts图表不能动态随页面变化大小 只能固定大小
在mui tab选项卡中一直都不能让echarts动态变化大小 只能固定大小来展示图表,网上说的window.onresize = mycharts.resize;方法根本就没有效果,后面在https ...
- JS刷新页面总和!多种JS刷新页面代码!
1)<meta http-equiv="refresh"content="10;url=跳转的页面">10表示间隔10秒刷新一次2)<scri ...
随机推荐
- [mmc]设备树节点含义
&mmc3 { status = "okay"; dmas = <&edma &edma >; dma-names = "tx&quo ...
- mysql 修改数据库存储地址
默认目录/var/lib/mysql systemctl stop mysqld cp -pr /var/lib/mysql /data/mysql Create a backup of /etc/m ...
- Rails NameError uninitialized constant class solution
rails nameerror uninitialized constant class will occur if your rails console is not loaded with con ...
- 另外一款超棒的响应式布局jQuery插件 – Freetile.js
在线演示 我们曾经介绍过俩款知名的响应式布局插:isotope和masonary,今天我们这里再介绍一款相当不错的响应式布局插件 – Freetile.js,使用它同样可以生成超酷的动态布局效果.相信 ...
- 关于Unity中UI中的Slider,Toggle和InputField等节点
一.Slider节点 1.创建一个Canvas 2.对Canvas进行一些初始化操作 3.创建一个Image的UI节点在Canvas下面作为子节点 4.把Image铺满整个Canvas,把宽高设置为6 ...
- C# 在Bitmap上绘制文字出现锯齿的问题
解决锯齿问题主要是修改Graphics的属性 修复绘制图片锯齿问题可以修改 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiA ...
- am335x LCD参数更改
/******************************************************************** * am335x LCD参数更改 * * 本文记录am335 ...
- peek函数的用法
#include <iostream> /* run this program using the console pauser or add your own getch, system ...
- ubuntu下android环境的搭建
---------省略1000字 https://dl-ssl.google.com/android/eclipse/ 如果该方法被墙,直接下载最新ADT,在我的博客里有介绍,或者我已经上传百度网盘 ...
- pacbio 原始下机数据h5 文件简介
pacbio 采用hdf5文件格式保存原始的下机数据,对于RS 测序系统而言,会产生一个 bas.h5 的文件; 以bas.h5 文件为例,看一下有下机数据中保存了那些信息 h5dump 工具可以用来 ...