根據(jù)之前介紹的DOM的api實(shí)在太難記憶和使用繁雜 所以為了更好的調(diào)用John Resig 大神造了jquery的輪子
jquery的核心The Write Less,Do More,簡潔的API、優(yōu)雅的鏈?zhǔn)?、?qiáng)大的查詢與便捷的操作。
做一個(gè)簡單的jquery的功能
var $div = $('div') //輸入div
$div.addClass('red') // 可將所有 div 的 class 添加一個(gè) red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi
1.參數(shù)傳遞
var ('div')
要實(shí)現(xiàn)上面這個(gè)功能,我的理解是首先設(shè)置window對(duì)象jQuery為函數(shù)返回的結(jié)果,然后把參數(shù)'div'傳遞到函數(shù)內(nèi)的DOM,作為變量進(jìn)行下一步的操作。
window.jQuery=function(selector){
let alldiv=document.querySelectorAll(selector)
}
window.$ = jQuery
2.返回對(duì)象
div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi
可以觀察得到$div是一個(gè)對(duì)象,它的key有addClass和setText。
那我也返回一個(gè)含有addClass和setClass的對(duì)象。
window.jQuery=function (selector){
let alldiv=document.querySelectorAll(selector)
return{
addClass:function (){},
setClass:function(){}
}
}
window.$ = jQuery
3.補(bǔ)全對(duì)象
我們得到了alldiv,它是一個(gè)偽數(shù)組。如果每個(gè)div都要添加class的話,需要一個(gè)for循環(huán),然后每一次用DOM的方法里的classList.add功能對(duì)div添加class。
addClass: function(){
for(var i=0;i<alldiv.length;i++){
alldiv[i].classList.add("red")
}
setText: function(){
for(var i=0;i<alldiv.length;i++){
alldiv[i].textContent = "hi"
}
把a(bǔ)ddClass和setText的內(nèi)容結(jié)合到函數(shù)內(nèi),得到:
window.jQuery=function (selector){
let alldiv=document.querySelectorAll(selector)
return{
addClass: function(){
for(var i=0;i<alldiv.length;i++){
alldiv[i].classList.add("red")
}
},
setText: function(){
for(var i=0;i<alldiv.length;i++){
alldiv[i].textContent = "hi"
}
}
}
}
window.$ = jQuery