<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        原生Js與jquery的多組處理,僅展開(kāi)一個(gè)區(qū)塊的折疊效果_javascript技巧

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:56:47
        文檔

        原生Js與jquery的多組處理,僅展開(kāi)一個(gè)區(qū)塊的折疊效果_javascript技巧

        原生Js與jquery的多組處理,僅展開(kāi)一個(gè)區(qū)塊的折疊效果_javascript技巧:需求是, 同一個(gè)頁(yè)面, 有多組(不固定), 每組區(qū)塊數(shù)量不一定一樣的小區(qū)塊. 要求每次只展開(kāi)一個(gè)區(qū)塊. 實(shí)現(xiàn)原理其實(shí)很簡(jiǎn)單, 點(diǎn)擊導(dǎo)航, 若它的區(qū)塊為隱藏, 則展開(kāi)它, 同時(shí), 隱藏掉同組其他區(qū)塊; 若它的區(qū)塊為展開(kāi), 則隱藏它, 同時(shí), 展開(kāi)同組其他區(qū)塊中的一個(gè). 一
        推薦度:
        導(dǎo)讀原生Js與jquery的多組處理,僅展開(kāi)一個(gè)區(qū)塊的折疊效果_javascript技巧:需求是, 同一個(gè)頁(yè)面, 有多組(不固定), 每組區(qū)塊數(shù)量不一定一樣的小區(qū)塊. 要求每次只展開(kāi)一個(gè)區(qū)塊. 實(shí)現(xiàn)原理其實(shí)很簡(jiǎn)單, 點(diǎn)擊導(dǎo)航, 若它的區(qū)塊為隱藏, 則展開(kāi)它, 同時(shí), 隱藏掉同組其他區(qū)塊; 若它的區(qū)塊為展開(kāi), 則隱藏它, 同時(shí), 展開(kāi)同組其他區(qū)塊中的一個(gè). 一

        需求是, 同一個(gè)頁(yè)面, 有多組(不固定), 每組區(qū)塊數(shù)量不一定一樣的小區(qū)塊. 要求每次只展開(kāi)一個(gè)區(qū)塊. 實(shí)現(xiàn)原理其實(shí)很簡(jiǎn)單, 點(diǎn)擊導(dǎo)航, 若它的區(qū)塊為隱藏, 則展開(kāi)它, 同時(shí), 隱藏掉同組其他區(qū)塊; 若它的區(qū)塊為展開(kāi), 則隱藏它, 同時(shí), 展開(kāi)同組其他區(qū)塊中的一個(gè). 一開(kāi)始以為僅僅簡(jiǎn)單的兩個(gè)遍歷就能搞定. 但事實(shí)并非如此. 冷靜思考了下, 通過(guò)點(diǎn)擊的元素取到當(dāng)前組的相關(guān)元素, 再單獨(dú)處理當(dāng)前組才合理. 順著這個(gè)思路, 功能終于實(shí)現(xiàn)了, 寫(xiě)了原生Js版本, 用同樣的思路寫(xiě)了個(gè)jQ版本. 時(shí)間關(guān)系, 寫(xiě)的也比較零散, 就沒(méi)有封裝. 其實(shí), 對(duì)這種思路也不是很滿(mǎn)意, 感覺(jué)太散了, 哪位大師有更好的思路請(qǐng)賜教.

        jQ版區(qū)塊的標(biāo)題, 會(huì)有一個(gè)Js錯(cuò)誤, 那是因?yàn)楂@取Js版下的h2時(shí), 我偷了個(gè)懶, 把jQ的也遍歷進(jìn)去了. 我想, 實(shí)際應(yīng)用中, 也不會(huì)有人同一個(gè)效果, 一邊用Js一邊用jQ吧. 核心代碼點(diǎn)此查看樣例
        代碼如下:
        //原生Js版本 ***** start
        window.onload=function(){
        //共用函數(shù)區(qū)
        var iBase={
        //document.getElementById
        Id: function(name){return document.getElementById(name)},
        //通過(guò)class獲取元素
        GetByClass: function(name,tagName,elem){
        var c=[];
        var re=new RegExp('(^|\\s)'+name+'(|\\s$)');
        var e=(elem || document).getElementsByTagName(tagName || '*');
        for(var i=0; i < e.length; i++){
        if(re.test(e[i].className)){
        c.push(e[i]);
        }
        }
        return c;
        },
        //獲取樣式屬性
        AttrStyle: function(elem,attr){
        if(elem.attr){
        return elem.style[attr];
        }else if(elem.currentStyle){
        return elem.currentStyle[attr];
        }else if(document.defaultView && document.defaultView.getComputedStyle){
        attr=attr.replace(/([A-Z])/g,'-$1').toLowerCase();
        return document.defaultView.getComputedStyle(elem,null).getPropertyValue(attr);
        }else{
        return null;
        }
        },
        //獲取祖輩元素中符合指定樣式的元素
        Parents: function(elem,name){
        var r=new RegExp('(^|\\s)'+name+'(|\\s$)');
        elem=elem.parentNode;
        if(elem!=null){
        return r.test(elem.className) ? elem : iBase.Parent(elem,name) || null;
        }
        },
        //取索引值
        Index: function(cur,obj){
        for(var i=0; i < obj.length; i++){
        if(obj[i]==cur){
        return i;
        }
        }
        }

        }

        //變量定義
        var listBox=iBase.GetByClass('js','div');
        var navItem=iBase.Id('demo').getElementsByTagName('h2');//此處將jQ區(qū)塊中的h2也取到了,所以頁(yè)面會(huì)有個(gè)小小的錯(cuò)誤
        var icoItem=null,boxItem=null,boxDisplay=null,elemIndex=null,elemParent=null;
        //初始化展開(kāi)第一個(gè)
        for(var i=0; i < listBox.length;i++){
        iBase.GetByClass('box','div',listBox[i])[0].style.display='block';
        listBox[i].getElementsByTagName('span')[0].innerHTML='-';
        }
        //遍歷所有點(diǎn)擊項(xiàng)
        for(var i=0; i < navItem.length;i++){
        navItem[i].onclick=function(){
        elemParent=iBase.Parents(this,'js');//獲取當(dāng)前點(diǎn)擊所在區(qū)塊
        navItem=elemParent.getElementsByTagName('h2');//獲取當(dāng)前區(qū)塊下的點(diǎn)擊項(xiàng)
        icoItem=elemParent.getElementsByTagName('span');//獲取當(dāng)前區(qū)塊下的展開(kāi)關(guān)閉
        boxItem=iBase.GetByClass('box','div',elemParent);//獲取需要控制的區(qū)塊
        elemIndex=iBase.Index(this,navItem);//獲取當(dāng)前點(diǎn)擊在當(dāng)前區(qū)塊點(diǎn)擊項(xiàng)中的索引
        //切換展開(kāi)關(guān)閉圖標(biāo)
        icoItem[elemIndex].innerHTML= icoItem[elemIndex].innerHTML=='-' ? '+' : '-';
        if(iBase.AttrStyle(boxItem[elemIndex],'display')=='block'){
        //控制項(xiàng)展開(kāi)狀態(tài)下,隱藏當(dāng)前,展開(kāi)其他的第一項(xiàng)
        //此處有個(gè)展開(kāi)0/1的判斷,因?yàn)楫?dāng)點(diǎn)擊第一個(gè)時(shí)是不能再展開(kāi)第一個(gè)的
        boxItem[elemIndex].style.display='none';
        if(elemIndex==0){
        boxItem[1].style.display='block';
        icoItem[1].innerHTML='-'
        }else{
        boxItem[0].style.display='block'
        icoItem[0].innerHTML='-'
        }
        }else{
        //控制項(xiàng)展開(kāi)狀態(tài)下,展開(kāi)當(dāng)前,隱藏其他項(xiàng)
        boxItem[elemIndex].style.display='block';
        for(var k=0;k < boxItem.length; k++){
        if(k!=elemIndex){
        boxItem[k].style.display='none';
        icoItem[k].innerHTML='+';
        }
        }
        }
        }
        }

        }

        //jQuery版本 ***** start
        $(function(){
        //變量定義區(qū)
        var _listBox=$('.jq');
        var _navItem=$('.jq>h2');
        var _boxItem=null, _icoItem=null, _parents=null, _index=null;

        //初始化第一個(gè)展開(kāi)
        _listBox.each(function(i){
        $(this).find('div.box').eq(0).show();
        $(this).find('h2>span').eq(0).text('-');
        });

        //遍歷所有的點(diǎn)擊項(xiàng)
        _navItem.each(function(i){
        $(this).click(function(){
        //找到當(dāng)前點(diǎn)擊父元素為listbox(單個(gè)區(qū)塊)的元素
        _parents=$(this).parents('.listbox');
        _navItem=_parents.find('h2');//此區(qū)塊中的點(diǎn)擊項(xiàng)
        _icoItem=_parents.find('span');//此區(qū)塊中的展開(kāi)關(guān)閉圖標(biāo)
        _boxItem=_parents.find('div.box');//此區(qū)塊中展開(kāi)關(guān)閉項(xiàng)
        _index=_navItem.index(this);//取得當(dāng)前點(diǎn)擊在當(dāng)前區(qū)塊下點(diǎn)擊項(xiàng)中的索引值
        if(_boxItem.eq(_index).is(':visible')){
        //若當(dāng)前點(diǎn)擊項(xiàng)下的展開(kāi)關(guān)閉項(xiàng)是顯示的,則關(guān)閉,同時(shí)展開(kāi)另外項(xiàng)中的第一個(gè)
        _boxItem.eq(_index).hide().end().not(':eq('+_index+')').first().show();
        _icoItem.eq(_index).text('+').end().not(':eq('+_index+')').first().text('-');
        }else{
        //若當(dāng)前點(diǎn)擊項(xiàng)下的展開(kāi)關(guān)閉項(xiàng)是隱藏的,則展開(kāi),同時(shí)隱藏其他項(xiàng)
        _boxItem.eq(_index).show().end().not(':eq('+_index+')').hide();
        _icoItem.eq(_index).text('-').end().not(':eq('+_index+')').text('+');
        }
        });
        });
        });

        演示地址:http://demo.jb51.net/js/jsjq-flod-onlyone/index.htm
        打包下載:http://www.gxlcms.com/jiaoben/33950.html
        本人來(lái)自Mr.Think的博客 http://mrthink.net/jsjq-flod-onlyone/

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        原生Js與jquery的多組處理,僅展開(kāi)一個(gè)區(qū)塊的折疊效果_javascript技巧

        原生Js與jquery的多組處理,僅展開(kāi)一個(gè)區(qū)塊的折疊效果_javascript技巧:需求是, 同一個(gè)頁(yè)面, 有多組(不固定), 每組區(qū)塊數(shù)量不一定一樣的小區(qū)塊. 要求每次只展開(kāi)一個(gè)區(qū)塊. 實(shí)現(xiàn)原理其實(shí)很簡(jiǎn)單, 點(diǎn)擊導(dǎo)航, 若它的區(qū)塊為隱藏, 則展開(kāi)它, 同時(shí), 隱藏掉同組其他區(qū)塊; 若它的區(qū)塊為展開(kāi), 則隱藏它, 同時(shí), 展開(kāi)同組其他區(qū)塊中的一個(gè). 一
        推薦度:
        標(biāo)簽: 折疊 java javascript
        • 熱門(mén)焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門(mén)推薦

        專(zhuān)題
        Top
        主站蜘蛛池模板: 中国好声音第二季免费播放| 久久久受www免费人成| 手机看黄av免费网址| 亚洲av无码片区一区二区三区| av片在线观看永久免费| 亚洲人成色7777在线观看不卡| 日本特黄特色AAA大片免费| 亚洲成a人片在线观看久| 又硬又粗又长又爽免费看| 久久久久亚洲AV成人网| 好男人资源在线WWW免费| 国产亚洲3p无码一区二区| 免费一区二区无码东京热| 亚洲精品免费视频| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 亚洲小说图区综合在线| AV免费网址在线观看| 亚洲中文字幕无码日韩| 最近免费中文字幕MV在线视频3 | a级亚洲片精品久久久久久久| 国产精品免费大片一区二区| 国产v亚洲v天堂无码网站| 久久久久高潮毛片免费全部播放| 亚洲一区免费在线观看| 国产免费看插插插视频| CAOPORN国产精品免费视频| 亚洲毛片基地日韩毛片基地| 欧洲精品免费一区二区三区| 国产成人精品免费大全| 亚洲视频在线观看地址| 永久免费看bbb| 国产偷伦视频免费观看| 亚洲日本乱码卡2卡3卡新区| 亚洲成a人片在线观看老师| 亚洲精品免费视频| WWW亚洲色大成网络.COM| 91精品手机国产免费| 亚洲第一成年免费网站| 亚洲乱码精品久久久久..| 免费精品人在线二线三线区别| 美女被免费视频网站a|