这两天遇到一个页面,同一个页面中同一个特效会用好多次,比如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选项卡封装的更多相关文章

  1. js基础练习一之tab选项卡

    最近在学习前端,当然包括js,css,html什么的,在听课时做的一些小练习,记录下来: 实例一: --Tab选项卡-- <script type="text/javascript&q ...

  2. 原生js实现tab选项卡里内嵌图片滚动特效代码

    <!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...

  3. js 实现tab选项卡

    最近一直在研究js  如果不及时复习的话前边学到的东西很快就会忘掉,所以把前段时间的一个简单的tab选项卡的思路写出来也算复习了一下吧, 第一步:先把布局写出来: <div id="d ...

  4. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

  5. Selenium with Python 005 - 调用js操作页面元素

    WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...

  6. 纯js实现网页tab选项卡切换效果

    纯js实现网页tab选项卡切换效果 百度搜索     js 点击菜单项就可以切换内容的效果

  7. tab选项卡切换(js原生、jQuery )

    思路: ① 遍历Tab选项 ② 然后给每个Tab选项绑定点击事件 ③ 每次点击时清除所有Tab选项及Tab选项内容的样式,然后给当前Tab选项添加标记样式,给当前Tab选项添加显示样式 <!DO ...

  8. mui在tab选项卡中echarts图表不能动态随页面变化大小 只能固定大小

    在mui tab选项卡中一直都不能让echarts动态变化大小 只能固定大小来展示图表,网上说的window.onresize = mycharts.resize;方法根本就没有效果,后面在https ...

  9. JS刷新页面总和!多种JS刷新页面代码!

    1)<meta http-equiv="refresh"content="10;url=跳转的页面">10表示间隔10秒刷新一次2)<scri ...

随机推荐

  1. [mmc]设备树节点含义

    &mmc3 { status = "okay"; dmas = <&edma &edma >; dma-names = "tx&quo ...

  2. mysql 修改数据库存储地址

    默认目录/var/lib/mysql systemctl stop mysqld cp -pr /var/lib/mysql /data/mysql Create a backup of /etc/m ...

  3. Rails NameError uninitialized constant class solution

    rails nameerror uninitialized constant class will occur if your rails console is not loaded with con ...

  4. 另外一款超棒的响应式布局jQuery插件 – Freetile.js

    在线演示 我们曾经介绍过俩款知名的响应式布局插:isotope和masonary,今天我们这里再介绍一款相当不错的响应式布局插件 – Freetile.js,使用它同样可以生成超酷的动态布局效果.相信 ...

  5. 关于Unity中UI中的Slider,Toggle和InputField等节点

    一.Slider节点 1.创建一个Canvas 2.对Canvas进行一些初始化操作 3.创建一个Image的UI节点在Canvas下面作为子节点 4.把Image铺满整个Canvas,把宽高设置为6 ...

  6. C# 在Bitmap上绘制文字出现锯齿的问题

    解决锯齿问题主要是修改Graphics的属性 修复绘制图片锯齿问题可以修改 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiA ...

  7. am335x LCD参数更改

    /******************************************************************** * am335x LCD参数更改 * * 本文记录am335 ...

  8. peek函数的用法

    #include <iostream> /* run this program using the console pauser or add your own getch, system ...

  9. ubuntu下android环境的搭建

    ---------省略1000字 https://dl-ssl.google.com/android/eclipse/  如果该方法被墙,直接下载最新ADT,在我的博客里有介绍,或者我已经上传百度网盘 ...

  10. pacbio 原始下机数据h5 文件简介

    pacbio 采用hdf5文件格式保存原始的下机数据,对于RS 测序系统而言,会产生一个 bas.h5 的文件; 以bas.h5 文件为例,看一下有下机数据中保存了那些信息 h5dump 工具可以用来 ...