这两天遇到一个页面,同一个页面中同一个特效会用好多次,比如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. maven_nexus3私服搭建

    [maven_nexus3私服搭建] # 00.安装环境说明# (1)Windows7 64位# (2)JDK1.8 64位# (3)Sonatype Nexus Repository OSS 3.1 ...

  2. JVM监控添加参数

    -Dcom.sun.management.jmxremote.port                           远程主机端口号的-Dcom.sun.management.jmxremote ...

  3. 将string转换成char型的一般方法

    C++文件读取中: infile in: in.open("file.dat",ios::in); 这样是能够的. 可是 string a; a="file.dat&qu ...

  4. python中的map()函数

    MapReduce的设计灵感来自于函数式编程,这里不打算提MapReduce,就拿python中的map()函数来学习一下. 文档中的介绍在这里: map(function, iterable, .. ...

  5. php连接mssql pdo

    怀疑mssql的默认编码...应该不是utf8吧??? <?php $cnx = new PDO("odbc:Driver={SQL Server};Server=XEJMZWMDIX ...

  6. (转)非阻塞Connect对于select时应注意问题

    对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后 ...

  7. 奇葩问题:ListView中Item与Item中的Button不能单击问题

    android中ListView是一个经常要用到的一个组件,用到该组件时经常会碰到ListView的Item和Item中的Button不能单击的问题. 本人在使用时同样也遇到过这样的情况,共有三种情况 ...

  8. datepicker防手动输入

    在<input>中加入readonly="readonly"

  9. linux命令详解之netstat

    今天在使用linux的时候,要查看端口号,但是不知道要使用哪一个命令所以就学习了一下,原来是使用netstat,接下来给大家一起来学习. 一.netstat介绍 1.1.简介 Netstat 命令用于 ...

  10. Java基础--生成验证码

    HTML <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...