所謂jQuery
不過是個(gè)提供很多方便使用的 API 的函數(shù)途凫,所以可以這也大體模擬一下幾個(gè)簡(jiǎn)單的功能。
首先,我們?cè)?window
下創(chuàng)建一個(gè) window.jQuery
函數(shù),并提供一個(gè)形參赁还。
window.jQuery = function(nodeOrSelector) {
//沒錯(cuò),這就是 jQuery
}
然后,我們?nèi)诵曰呐袛嘁幌滦螀⒌念愋褪?node結(jié)點(diǎn)
還是 選擇器語(yǔ)句
驹沿,并把形參賦值給對(duì)象 nodes
。
if(typeof nodeOrSelector === 'string'){
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){
nodes = {
0: nodeOrSelector,
length: 1
}
}
好了蹈胡,現(xiàn)在我們可以聲明所需函數(shù)利用 DOM
操作對(duì)偽數(shù)組 nodes
進(jìn)行閉包操作了渊季。
nodes.addClass = function(value){
for (let i=0;i<nodes.length;i++){
nodes[i].classList.add(value)
}
}
nodes.setText = function(text){
for (let i = 0;i < nodes.length; i++){
nodes[i].textContent = text
}
}
最后朋蔫,別忘了返回偽數(shù)組 nodes
。
return nodes
優(yōu)化:jQuery
太難拼了却汉,我們選擇 $
符號(hào)代替它
window.$ = jQuery
好了驯妄,現(xiàn)在我們就可以用自己寫的jQuery
來方便快捷實(shí)現(xiàn) DOM
操作了
var $div = $('div')
$div.addClass('red') // 可將所有 div 的 class 添加一個(gè) red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi