jq封裝函式

weixin_33861800發表於2018-01-21

jquery的介紹和一些選擇器我在前面的文章裡也寫了一點,那麼如何封裝一個函式呢?

我想做到當我選擇某個li時,其他的li被放入到一個偽陣列裡。
6300784-b4bb086795fbce65.png
image.png

我們封裝了一個函式來方便上面的需求。

6300784-4596df6399d0f25f.png
image.png

我們可以再封裝一個函式來給他們新增class

6300784-3b05e9b6c869dfce.png
封裝class

名稱空間

6300784-0f199990c5e6a3c1.png
image.png

我們還可以在原型鏈上新增公有屬性

6300784-1e2b4fd8963017bd.png
image.png

我們可以給自己的jquery新增一些功能。

window.jQuery = function(nodeOrSelector){   
  let nodes = {}//宣告一個偽陣列存放東西
  if(typeof nodeOrSelector === 'string'){//如果是字串,就放入node中
      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){//獲取內容為節點,node中
      nodes = {
          0:nodeOrSelector,
          length:1
      }
  }
  nodes.addClass = function(classes){
      classes.forEach((value) => {
          for(let i = 0; i< nodes.length; i++){
              nodes[i].classList.add(value)
          }
      })
  }
  nodes.text = function(text){
      if(text === undefined){ 
          let texts = []
          for(let i = 0; i<nodes.length; i++){
              texts.push(nodes[i].textContent)
          }
          return texts
      }else{    
          for(let i = 0; i<nodes.length; i++){
              nodes[i].textContent = text
          }
      }
  }
  return nodes
}

相關文章