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 ...
随机推荐
- Python RGB 和HSV颜色相互转换
转自:http://outofmemory.cn/code-snippet/1002/Python-RGB-HSV-color-together-switch Python RGB 和HSV颜色相互转 ...
- 解决App can’t be opened because it is from an unidentified developer
关闭设置 打开终端 输入sudo spctl --master-disable
- linux profile\bashrc\bash_profile之间的区别和联系
/etc/profile 每个用户,首次登录时被执行: /etc/bashrc 每个运行bash shell的用户都执行此文件,当bsh被打开时,该文件被读取: ~/.bash_profile 专用于 ...
- spring mvc 下载安装
https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework ...
- tftp32作为dhcp服务器
/******************************************************************* * tftp32作为dhcp服务器 * 每次使用tftp进行文 ...
- 建议 for 语句的循环控制变量的取值采用“半开半闭区间”写法
建议 for 语句的循环控制变量的取值采用“半开半闭区间”写法. #include <iostream> /* run this program using the console pau ...
- devstack install attributeError: 'module' object has no attribute '__version__'
work around: edit the file /usr/local/lib/python2.7/dist-packages/openstack/session.py and remove th ...
- sqlserver 字符串split
select value from TF_NJVALUES('3C457A2D-188B-4D99-A822-2968054E1FB8,3C457A2D-188B-4D99-A822-2968054E ...
- JavaSE(八)之Collection总结
前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合. 一.Collection接口 首先我们要一张图来说明: Collection接口,它是集合的顶层接 ...
- 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable
近期我也是有点郁闷,究竟是程序中处理关联关系.还是直接使用外键处理关联关系呢?这个的说法不一致!程序中处理这样的关联关系的话.自己去维护这样的约束.这样的非常乐观的一种做法!或者是直接在数据库中处理这 ...