国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js學習總結_選項卡封裝(實例講解)

2024-05-06 15:14:30
字體:
來源:轉載
供稿:網友

這個插件對應的html的結構如下

<div class='box' id='tabFir'>    <ul id='tabOptions'>      <li class='select'>頁卡一</li>      <li>頁卡二</li>      <li>頁卡三</li>    </ul>    <div class='select'>      <div>1</div>      <div>2</div>      <div>3</div>      <div>4</div>    </div>    <div>內容二</div>    <div>內容三</div>  </div>

版本1

//實現一個選項卡封裝:我們可以分析出,只要多個選項卡的主體結構一樣,那么每個實現的思想都是一樣的,唯一不一樣的就是最外層的盒子不一樣~function(){  /*    tabChange:封裝一個選項卡的插件,只要大結構保持統一,以后實現選項卡的功能,只需要調取這個方法執行即可實現    param:container當前要實現選項卡的這個容器        defaultIndex:默認選中項的索引  */  function tabChange(container,defaultIndex){    var tabFirst = utils.firstChild(container),oLis = utils.children(tabFirst);    var divList = utils.children(container,"div");    //讓defaultIndex對應的頁卡有選中的樣式    defaultIndex = defaultIndex || 0;    utils.addClass(oLis[defaultIndex],"select");    utils.addClass(divList[defaultIndex],"select");    //具體的切換功能    for(var i = 0;i<oLis.length;i++){      oLis[i].onclick = function(){        utils.addClass(this,"select");        var curSiblings = utils.siblings(this);        for(var i = 0;i<curSiblings.length;i++){          utils.removeClass(curSiblings[i],"select")        }        var index = utils.index(this);        for(var i = 0;i<divList.length;i++){          i===index ? utils.addClass(divList[i],"select") : utils.removeClass(divList[i],"select")        }      }      }      }  window.fTab = tabChange  }()

版本2(將for循環改為使用事件委托的方式)

//實現一個選項卡封裝:我們可以分析出,只要多個選項卡的主體結構一樣,那么每個實現的思想都是一樣的,唯一不一樣的就是最外層的盒子不一樣~function(){  /*    tabChange:封裝一個選項卡的插件,只要大結構保持統一,以后實現選項卡的功能,只需要調取這個方法執行即可實現    param:container當前要實現選項卡的這個容器        defaultIndex:默認選中項的索引  */  function tabChange(container,defaultIndex){    var tabFirst = utils.firstChild(container),oLis = utils.children(tabFirst);    var divList = utils.children(container,"div");    //讓defaultIndex對應的頁卡有選中的樣式    defaultIndex = defaultIndex || 0;    utils.addClass(oLis[defaultIndex],"select");    utils.addClass(divList[defaultIndex],"select");    //具體的切換功能        //使用事件委托優化    tabFirst.onclick = function(e){      e = e || window.event;      e.target = e.target || e.srcElement;      if(e.target.tagName.toLowercase()==="li"){//說明當前點擊的是li標簽        detailFn.call(e.target,oLis,divList);      }    }  }  function detailFn(oLis,divList){    var index = utils.index(this);    utils.addClass(this,"select");    for(var i = 0;i<oLis.length;i++){      i!==index?utils.removeClass(oLis[i],"select"):null;      i===index ? utils.addClass(divList[i],"select") : utils.removeClass(divList[i],"select");    }  }  window.fTab = tabChange  }()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 无棣县| 湾仔区| 靖远县| 宣城市| 广丰县| 咸丰县| 西华县| 当雄县| 溧阳市| 平南县| 儋州市| 于田县| 岑巩县| 京山县| 涡阳县| 榆社县| 漾濞| 老河口市| 五台县| 洱源县| 福建省| 天等县| 江城| 曲沃县| 漯河市| 长泰县| 綦江县| 敦煌市| 山西省| 平原县| 沾化县| 阳泉市| 耿马| 德州市| 辽宁省| 敦煌市| 裕民县| 高平市| 赞皇县| 酉阳| 任丘市|