今天第一次接觸jQuery,先簡單的實現(xiàn)一個jQuery的API,實現(xiàn)兩個方法:
- addClass()
- setText()
主要講講實現(xiàn)的過程與思路,其實也比較簡單,主要就是把常用的DOM對象封裝成函數(shù)即可。
1.首先建立一個函數(shù),并初始化一個object,最終函數(shù)中返回這個object,并且?guī)в?0,1,2....等key,其value是讀取到的DOM元素或者是節(jié)點;object還含有l(wèi)ength,長度為key的最大值+1;object再帶有多種方法key,一一對應其相應的函數(shù)。其實這個object就是一個偽數(shù)組,類似于參數(shù)arguments。
2.還要判斷實現(xiàn)的函數(shù)參數(shù)是否為string類型,或者是Node節(jié)點,然后返回不同的objects。
3.主要就是通過原生的DOM API :document.querySelectorAll()實現(xiàn)object的部分key。
4.還有一點要使用到window這個全局對象將該函數(shù)封裝好。
下面就是具體代碼:
var sunDom = function(string) {
let nodes = {length: 0}
if (typeof string === 'string') {
var elements = document.querySelectorAll(string)
for (let index = 0; index < elements.length; index++) {
const element = elements[index]
nodes[index] = element
nodes.length += 1
}
} else if(string instanceof Node) {
nodes = {
0: string,
length: 1
}
}
nodes.addClass = function addClass(classes) {
for (let index = 0; index < nodes.length; index++) {
const element = nodes[index]
element.classList.add(classes)
}
}
nodes.setText = function(string) {
for (let index = 0; index < nodes.length; index++) {
const element = nodes[index]
element.textContent = string
}
}
console.log(nodes)
return nodes
}
window.jQuery = sunDom
window.$ = jQuery
var $div = $('div')
$div.addClass('red') // 可將所有 div 的 class 添加一個 red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi