實現一個簡單的"jQuery"

本次博客記錄一個簡單的"jQuey"的實現方式,來加深對jQuery的理解:javascript

代碼:css

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<style type="text/css">
	.red{
	color:red;
	}
</style>
<body>
<div>你好</div>
<div>你好</div>
</body>
<script type="text/javascript">
window.jQuey = function (selectorOrNode){
  var nodes = {}
  // 判斷用戶傳進來的是個字符串仍是一個節點
  if (typeof selectorOrNode === 'string'){
    var temp = document.querySelectorAll(selectorOrNode)
    for (var i=0; i < temp.length; i++){
      nodes[i] = temp[i]
    }
    nodes.length = temp.length
  }else if(selectorOrNode instanceof Node){
    nodes = {
      0:selectorOrNode,
      length:1
    }
  }
  // 添加單個屬性
  nodes.addClass = function(newClass){
      for (var i=0; i<nodes.length; i++){
        nodes[i].classList.add(newClass)
      }
  }
  // 設置文本
  nodes.setText = function(text){
    for (var i=0; i<nodes.length; i++){
      nodes[i].textContent = text
    }
  }
  return nodes
}
window.$ = jQuey
var $div = $('div')
$div.addClass('red')
$div.setText("hi")


</script>
</html>

 

實現步驟:html

1.首先咱們建立一個函數並給了window.jQuey,這樣咱們就能夠直接使用jQuery.call來直接調用函數了。java

2. 建立了一個空對象 nodes;node

3.判斷傳入實參的類型,若是是一個字符串,就經過選擇器來獲取節點們,經過for循環,來構造咱們想要的nodes,並指定length,若是是一個節點,咱們就直接將這個節點放到第0個位置,並指定length爲1;函數

4.這裏咱們實現了兩個方法, 添加單個屬性的addClass和設置節點內文本的setText,將這兩個函數做爲值給了nodes的兩個鍵addClass和setText,而後返回對象;htm

5.爲了更像jQuery,咱們將jQuery給了window.$,這樣咱們就能夠直接使用$('div')獲取咱們所定義的jQuery對象和使用對象的方法。對象

效果圖:blog

相關文章
相關標籤/搜索