JS-【同页面多次调用】tab选项卡封装

简介: 这两天遇到一个页面,同一个页面中同一个特效会用好多次,比如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结构

 1 <div class="zsContWrap">
 2                 <!--横向菜单-->
 3                 <ul class="zsContMenu clearfix">
 4                     <li class="on"><a href="javascript:;">标签1</a></li>
 5                     <li><a href="javascript:;">标签2</a></li>
 6                 </ul>
 7                 <!--切换内容-->
 8                 <div class="zsCont">
 9                     <!--标签1 对应展示 内容-->
10                     <div>
11                         
12                     </div>
13                     <!--标签2 对应展示内容-->
14                     <div class="hide">
15                     </div>
16                 </div>
17             </div>

class名字解释

on:选中状态时标签的样式

hide{display:none;}/*特别注意,样式的优先级*/

————————————————————

【这个可以多次调用,调用时,就多写一个tab()就好了,括号里的两个参数换掉成最新的结构的class样式名字,】

 

声明:

  请尊重博客园原创精神,转载或使用图片请注明:

  博主:xing.org1^

  出处:http://www.cnblogs.com/padding1015/

目录
相关文章
|
1月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
58 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
1月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
48 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
2月前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
65 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
2月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
151 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
4月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
4月前
|
JavaScript
js实现的精美彩色tab选项卡切换特效源码
js实现的精美彩色tab选项卡切换特效源码是一段基于JS实现的文件夹tab选项卡切换效果,拥有彩色、单色两种选择,点击标签选项卡可实现相应的变色效果,非常有意思,欢迎对此段代码感兴趣的朋友前来下载使用。
50 2
|
5月前
|
JavaScript
js学习--制作选项卡
js学习--制作选项卡
54 4
|
5月前
|
JavaScript 前端开发 API
JavaScript全屏,监听页面是否全屏
JavaScript全屏,监听页面是否全屏
92 0
|
5月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
188 4
|
5月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
169 2

热门文章

最新文章