二十多行代碼實(shí)現(xiàn)一個簡易 jQuery

二十多行代碼實(shí)現(xiàn)一個簡易 jQuery

  1. 先寫一個叫 jQuery 的構(gòu)造函數(shù),并且將它作為全局變量,方便調(diào)用,并且這個函數(shù)可以接受一個選擇器字符串用于選擇符合條件的元素,或直接接受一個節(jié)點(diǎn),最后返回一個偽數(shù)組的節(jié)點(diǎn)對象。
window.jQuery = function(nodeOrSelector) {
  let nodes = {};
  if (typeof nodeOrSelector === 'string') {
    nodes = document.querySelectorAll(nodeOrSelector);
  } else if (nodeOrSelector instanceof Node) {
    nodes = {
      0: nodeOrSelector,
      length: 1
    };
  }

  return nodes;
};

利用typeof操作符來判斷參數(shù)是否是字符串,若為true,則利用DOM的querySelectorAll獲取所有相關(guān)節(jié)點(diǎn),否則再用instanceof判斷參數(shù)是否為一個Node對象,若是則構(gòu)造一個長度為1的偽數(shù)組。

  1. 現(xiàn)在我們獲得了一個可供操作的偽數(shù)組對象nodes了,但是還沒有提供用于操作它的方法。我們?yōu)樗帉憙蓚€方法addClasssetText,它們的邏輯都差不多,都是先接受一個參數(shù),然后利用for循環(huán)遍歷偽數(shù)組對象nodes,最后利用節(jié)點(diǎn)自帶的方法對每個節(jié)點(diǎn)進(jìn)行修改。
window.jQuery = function(nodeOrSelector) {
  let nodes = {};
  if (typeof nodeOrSelector === 'string') {
    nodes = document.querySelectorAll(nodeOrSelector);
  } else if (nodeOrSelector instanceof Node) {
    nodes = {
      0: nodeOrSelector,
      length: 1
    };
  }

  nodes.addClass = function(className) {
    for (let i = 0; i < nodes.length; i++) {
      nodes[i].classList.add(className);
    }
  };

  nodes.setText = function(text) {
    for (let i = 0; i < nodes.length; i++) {
      nodes[i].textContent = text;
    }
  };

  return nodes;
};
  1. 給它一個縮寫$,讓它看起來更像jQuery
window.$ = jQuery;
  1. 這樣一個簡易的jQuery就實(shí)現(xiàn)了,現(xiàn)在可以試著使用它了
$('li').addClass('red');  //為所有l(wèi)i標(biāo)簽添加一個叫red的class
$('li').setText('Hello');   //將所有l(wèi)i標(biāo)簽的文本內(nèi)容改為Hello
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、樣式篇 第1章 初識jQuery (1)環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,675評論 0 44
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計者無需花費(fèi)時間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,505評論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計者無需花費(fèi)時間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,274評論 0 1
  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,851評論 0 3
  • 第一章 jQuery簡介 1-1 jQuery簡介 1.簡介 2.優(yōu)勢 3.特性與工具方法 1-2 環(huán)境搭建 進(jìn)入...
    mo默22閱讀 1,776評論 0 11

友情鏈接更多精彩內(nèi)容