動手寫乙個jquery外掛程式 實踐

2021-09-13 14:53:42 字數 2976 閱讀 1329

目錄結構:index.html,index.css以及tab.js

首先搭建乙個jquery外掛程式的框架

tab.js

;(function ($) 

tab.prototype =

window.tab = tab

}(jquery))

index.html 裡呼叫tab建構函式

然後我們先配置一些預設引數

tab.js

```

var tab = function (target)

}```

使用者(使用者)配置引數的方法

預設引數配置好以後,我們需要獲取使用者的配置引數,

函式傳參的方式大家應該都很熟悉了,在這裡我們不用傳參的方式獲取,我們採用設定dom屬性的方式設定引數。這種配置方法很常見,比如element-ui

index.html

img*4

在最外層的div即我們選中的dom節點上設定了乙個名為config的屬性,config的值為一串json

這樣子我們就設定了引數,那麼怎麼獲取呢?我們寫乙個函式來獲取

獲取使用者的配置引數

tab.js

tab.prototype = else

},}

函式我們寫在tab.prototype{}裡,這裡的邏輯是:

1、attr()獲取我們在dom節點裡的配置引數

2、如果有的話就將我們獲取到的值轉換為js物件,沒有的話就返回null

這裡要注意的是我們的宿主dom,即我們在呼叫 new tab('#box1')傳入的物件要用jquery包裹一下,這樣才能正常獲取到該節點,因為我傳入的僅僅是宿主dom的id,當然也可以在呼叫時直接將這個id包裝一下,在這裡就可以省去這一步而直接使用傳過來的物件。

index.html

引數處理

在解決了使用者引數配置的問題後,我們就要處理引數了

tab.js

var tab = function (target) 

}

這裡用到$.exten的()方法,如果有使用者的配置引數則會追加修改this.config,如果使用者沒有配置引數,那麼程式就會使用我們的預設引數

獲取具體節點

tab.js / var tab = function (){}

this.tabitems = $(this.target).find(".title ul.tab-list li")

this.contentitems = $(this.target).find(".content img")

為每個tab標籤頁繫結節點

tab.js / var tab = function (){}

var config = this.config

//繫結滑鼠互動事件

if(config.tiggertype==="click"))

}else if(config.tiggertype==="click"||config.tiggertype!=="click"))

}/* this.tabitems.bind(config.tiggertype,function () )*/

1、在config配置裡獲取到滑鼠互動的方式,我在這裡寫了'click'和'mouseover'兩種,並且考慮到使用者配置引數時可能會寫錯所以在else if 判定了一下,如果使用者寫錯了那麼預設的互動方式是mouseover

2、當然也可以向***注釋的那樣直接繫結引數裡的方法,然後你們可以自己加一些錯誤提示什麼的

3、在繫結了互動方式後呼叫改變tab 樣式的函式changestyle()

我們給每個tab節點繫結了互動事件,在事件觸發後就呼叫changestyle()函式來該變tab標籤的樣式

該變tab選中的樣式

tab.js / tab.prototype={}

changestyle:function (currenttab) else

}

1、我們在呼叫的時候將目標節點傳參傳進來了

2、index()方法獲取當前索引,用與匹配下面的content內容區

3、去配置引數裡找有沒有配置切換效果,這裡我只配置看一種淡入淡出效果,如果有的話則淡入淡出的切換,如果沒有配置切換方式,那麼就是預設引數null則直接切換無效果

4、在給標籤頁addclss()新增選中狀態的同時,要將其它非選中狀態標籤頁的樣式清除

配置元件初始化時預設顯示的標籤頁

tab.js / var tab = function (){}

//預設顯示的tab

if(config.default<=this.tabitems.length) else

拿到引數裡的default之後走一遍changestyle()流程這樣就完成了預設標籤頁的設定

這裡要注意的就是因為陣列是從0開始的,但我們的習慣是從1開始,配置的時候想要第幾個標籤頁預設顯示就用第幾個,所以實際上這裡選中標籤頁時要將default-1

我在配置引數裡有寫,auto這個引數,本來是想寫自動切換這個功能的,但因為我在之前寫物件導向tab標籤頁時已經寫過了,這裡寫的有點煩就不寫了,無非就是加個定時器

終於走到了最後一步,將我們寫的建構函式註冊為jquery方法

之前我們使用方法是new 乙個新物件

tab.js / var tab = function (){}

$.fn.extend(

})

這樣子註冊一下,我們就可以按照jquery的方法去操作這個元件了

index.html

動手寫乙個jquery外掛程式 實踐

目錄結構 index.html,index.css以及tab.js 首先搭建乙個jquery外掛程式的框架 tab.js function tab.prototype window.tab tab jquery index.html 裡呼叫tab建構函式 function script 然後我們先配...

動手寫乙個阻塞佇列

之前看佇列,都是停留在看和使用的階段。再次看佇列的時候,忽然發現並沒有深入到底層。比如 阻塞佇列時如何阻塞的呢?是監聽,還是等待呢?然後看著看著就看到了lock和reentrantlock,為什麼不使用synchronized呢?為什麼使用condition,condition是什麼呢?wait,n...

Spring Boot 動手寫乙個 Start

我們在使用springboot 專案時,引入乙個springboot start依賴,只需要很少的 或者不用任何 就能直接使用預設配置,再也不用那些繁瑣的配置了,感覺特別神奇。我們自己也動手寫乙個start.pom 檔案如下 org.springframework.bootgroupid sprin...