jQuery 實(shí)質(zhì)上是一個(gè)構(gòu)造函數(shù)粱栖,接受一個(gè)參數(shù)(這個(gè)參數(shù)可能是節(jié)點(diǎn))并返回一個(gè)方法去操作這個(gè)節(jié)點(diǎn)育八。
window.jQuery = function(nodeOrSelector){ //獲取節(jié)點(diǎn)或者字符串
let node = { }//將字符串或者節(jié)點(diǎn)放入數(shù)組中
if(typeof nodeOrSelector ==='string'){//獲取內(nèi)容為字符串稽揭,將其放入偽數(shù)組中
let temp = document.querySelectorAll(nodeOrSelector)
for(let i =0;i<temp.length;i++;){
nodes[i] = temp[i]
}
nodes.length = temp.length
}else if(nodeOrSelector instanceof Node){//獲取內(nèi)容為節(jié)點(diǎn)翔忽,也將其放入偽數(shù)組中
nodes = {
0:nodeOrSelector,length:1
}
}
nodes.addClass = function(classes){//獲取參數(shù)后呼渣,通過(guò)遍歷操作相關(guān)節(jié)點(diǎn)
classes.forEach((value) =>{
for(let i = 0; i< nodes.length;i++){
node[i].classList.add(value)
}
} )
}
nodes.text = function(text){
if(text ===undefined){ //如果文本為空蔑祟,則添加文本
var texts = []
for(let i = 0;i<nodes.length;i++){
texts.push(nodes[i].textContent)
}
return texts
} else { //如果文本不為空早敬,則輸出文本內(nèi)容
for(let i = 0;i<nodes.length;i++){
nodes[i].textContent = text
}
}
}
window.$ = jQuery
var $div = $('div')
$div.addClass('red') // 可將所有 div 的 class 添加一個(gè) red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi