欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS實現(xiàn)選項卡插件的兩種寫法(jQuery和class)

 更新時間:2020年12月30日 13:50:18   作者:南柯Seven  
這篇文章主要為大家詳細介紹了JS實現(xiàn)選項卡插件的兩種寫法:jQuery和class,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JS實現(xiàn)選項卡插件的2種寫法,供大家參考,具體內容如下

實現(xiàn)插件的幾個注意點:

(1)定義一個固定的html結構,比如選項卡的標題的標簽為為li,每個選項卡的內容的標簽為div等等;
(2)選中時的樣式提前確定;
(3)最好先用簡單的JS實現(xiàn)選項卡的功能,再改為插件的模式。

html結構如下:

<style>
 * {
 margin: 0;
 padding: 0;
 }

 ul {
 list-style: none;
 }

 #tabBox {
 box-sizing: border-box;
 margin: 20px auto;
 width: 500px;
 }

 .navBox {
 display: flex;
 position: relative;
 top: 1px;
 }

 .navBox li {
 box-sizing: border-box;
 margin-right: 10px;
 padding: 0 10px;
 line-height: 35px;
 border: 1px solid #999;
 cursor: pointer;
 }

 .navBox li.active {
 border-bottom-color: #FFF;
 }

 #tabBox>div {
 display: none;
 box-sizing: border-box;
 padding: 10px;
 height: 150px;
 border: 1px solid #999;
 }

 #tabBox>div.active {
 display: block;
 }
 </style>
 
 <div id="tabBox">
 <ul class="navBox">
 <li class="active">編程</li>
 <li>讀書</li>
 <li>運動</li>
 </ul>
 <div class="active">編程使我快樂</div>
 <div>讀書使我幸福</div>
 <div>運動使我健康</div>
</div>

先用JS實現(xiàn)選項卡的功能:

let len = liList.length;
 for(let i = 0; i < len; i++) {
  liList[i].index = i;
  liList[i].onclick = function() {
  for(let j = 0; j < len; j++) {
   if(j === this.index) {
   liList[j].className = 'active';
   contentList[j].className = 'active';
   }
   else{
   liList[j].className = '';
   contentList[j].className = '';
   }
  }
 };
}

實現(xiàn)插件的第一種方法:jQuery

利用$.fn.extend方法,在jQuery上擴展一個選項卡功能的方法:

(function($){
 function clickLi() {
 let $this = this,
  $navBox = $this.find('.navBox'),
  $liList = $navBox.find('li'),
  $contentList = $this.find('div');

 $liList.click(function(){
  let $this = $(this),
  index = $this.index();
  $this.addClass('active').siblings().removeClass('active');
  $contentList.eq(index).addClass('active').siblings().removeClass('active');
 });
 }

 $.fn.extend({
 tabClick: clickLi
 });
})(jQuery);

使用方法:

let $tabBox = $('#tabBox');
$tabBox.tabClick();

實現(xiàn)插件的第二種方法:class

利用ES6中的class類,創(chuàng)建一個選項卡類Tab,并添加屬性和方法,并且可以多參數(shù)傳遞實現(xiàn)選項卡:

(function(){
 class Tab {
 constructor(selector, options) {
  // 處理第一個參數(shù)
  if(!selector)
  throw new ReferenceError('The first selector parameter must be passed~~');
  if(typeof selector === 'string')
  this.container = document.querySelector(selector);
  else if(selector.nodeType)
  this.container = selector;

  this.initialParams(options);

  this.navBox = this.container.querySelector('.navBox'),
  this.liList = this.navBox.querySelectorAll('li'),
  this.contentList = this.container.querySelectorAll('div'),
  this.count = this.liList.length;
  
  this.change();
  this.handleLi();
 }

 // 初始化參數(shù)
 initialParams(options) {
  let _default = {
  showIndex: 0,
  triggerEvent: 'click'
  };

  for(let key in options) {
  if (!options.hasOwnProperty(key)) break;
  _default[key] = options[key];
  }

  // 把信息掛載到實例上
  for (let key in _default) {
 if (!_default.hasOwnProperty(key)) break;
 this[key] = _default[key];
 }
 }

 // 切換標題
 change() {
  [].forEach.call(this.liList, (item, index) => {
  if(index === this.showIndex) {
   this.liList[index].className = 'active';
   this.contentList[index].className = 'active';
   return;
  }
  this.liList[index].className = '';
  this.contentList[index].className = '';
  });
 }

 // 綁定標題對應的事件
 handleLi() {
  [].forEach.call(this.liList, (item, index) => {
  item.addEventListener(this.triggerEvent, () => {
   this.showIndex = index;
   this.change();
  });
  });
 }
 }
 window.Tab = Tab;
})();

使用方法:

new Tab('#tabBox', {
 showIndex: 2,
 triggerEvent: 'mouseenter'
});

第二種方法是現(xiàn)在常用的方法,因為它可以傳遞很多參數(shù)??梢愿鶕?jù)需求,設置默認要傳遞的參數(shù),將這個選項卡插件做的更完善。

如果大家還想深入學習,可以點擊兩個精彩的專題:javascript選項卡操作方法匯總 jquery選項卡操作方法匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • three.js?Mool3D模型類的使用

    three.js?Mool3D模型類的使用

    這篇文章主要為大家介紹了three.js?Mool3D模型類的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 在 JavaScript 中如何更改字符串字符

    在 JavaScript 中如何更改字符串字符

    在本文中,我們將創(chuàng)建自定義函數(shù),借助不同示例的默認字符串方法,在我們想要的任何位置替換或更改字符串中的字符,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-07-07
  • 基于JavaScript實現(xiàn)省市聯(lián)動效果

    基于JavaScript實現(xiàn)省市聯(lián)動效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)省市聯(lián)動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Javascript中For In語句用法實例

    Javascript中For In語句用法實例

    這篇文章主要介紹了Javascript中For In語句用法,實例分析了javascript使用For In語句遍歷數(shù)組的技巧,需要的朋友可以參考下
    2015-05-05
  • 自制微信公眾號一鍵排版工具

    自制微信公眾號一鍵排版工具

    這篇文章主要介紹了自制微信公眾號一鍵排版工具的相關資料,需要的朋友可以參考下
    2016-09-09
  • JS異常處理的一個想法(sofish)

    JS異常處理的一個想法(sofish)

    由于網(wǎng)絡、瀏覽器問題、緩存等原因執(zhí)行js的時候會拋出異常接下來分享一個想法,基本上涉及到兩步:收集和使用,感興趣的你可以參考下哈,希望對你有所幫助
    2013-03-03
  • js創(chuàng)建數(shù)據(jù)共享接口——簡化框架之間相互傳值

    js創(chuàng)建數(shù)據(jù)共享接口——簡化框架之間相互傳值

    很多框架存在父子關系,操作起來十分麻煩,很多同學經(jīng)常出現(xiàn)這樣悲催的代碼
    2011-10-10
  • JavaScript對象訪問器Getter及Setter原理解析

    JavaScript對象訪問器Getter及Setter原理解析

    這篇文章主要介紹了JavaScript對象訪問器Getter及Setter原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • js 如何實現(xiàn)對數(shù)據(jù)庫的增刪改查

    js 如何實現(xiàn)對數(shù)據(jù)庫的增刪改查

    JavaScript操作數(shù)據(jù)庫JS操作Access數(shù)據(jù)庫,跟其他語言操作差不多,總結了一下習慣代碼,需要的朋友可以參考下
    2012-11-11
  • QTreeWidget中MainWindow窗體中布局器不起作用詳解

    QTreeWidget中MainWindow窗體中布局器不起作用詳解

    本文主要介紹了QTreeWidget中MainWindow窗體中布局器不起作用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論