理解 jQuery

1、還有必要學(xué)習(xí) jQuery 嗎

首先必須肯定的回答:有必要祸泪。
雖然目前 MVVM 框架很流行缨该,但 jQuery 依然占據(jù)一定地位。某些特定場(chǎng)景的項(xiàng)目 jQuery 依然是最好的選擇枉层,jQuery幫助我們解決了太多的兼容性問(wèn)題,而且對(duì)于有一定JS基礎(chǔ)的人來(lái)說(shuō)學(xué)習(xí) jQuery 的成本很低赐写,沒(méi)必要去掌握全部API鸟蜡,只要會(huì)查文檔就可以。雖然新項(xiàng)目中不一定會(huì)使用 jQuery 挺邀,但是學(xué)習(xí) jQuery 揉忘,尤其是去閱讀 jQuery 源碼,理解其設(shè)計(jì)思想端铛、設(shè)計(jì)模式泣矛,你將會(huì)頗有收獲。

2禾蚕、jQuery DOM 操作設(shè)計(jì)思想

jQuery 的基本設(shè)計(jì)思想和主要用法您朽,就是”選擇某個(gè)網(wǎng)頁(yè)元素,然后對(duì)其進(jìn)行某種操作”换淆。使用 jQuery 的第一步哗总,往往就是將一個(gè)選擇表達(dá)式,放進(jìn)構(gòu)造函數(shù) jQuery()(簡(jiǎn)寫為)倍试,得到被選中的元素讯屈,選中的元素可能是一個(gè),也可能是多個(gè)县习。第二步就是對(duì)這些元素進(jìn)行一系列操作耻煤,例如添加class具壮、移除class、取值和賦值哈蝇、移動(dòng)等棺妓。 jQuery的一大特點(diǎn)就是支持鏈?zhǔn)讲僮鳎搭愃朴谶@樣`('div').find('h3').eq(2).html('Hello');`,將一系列操作連接在一起炮赦。它的原理在于每一步的jQuery操作怜跑,返回的都是一個(gè)jQuery對(duì)象,所以不同操作可以連在一起吠勘。

3性芬、自己實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 jQuery

|

123456789101112131415161718192021222324252627282930313233

|

window.jQuery = function(nodeOrSelector) {  var nodes = {};  if (typeof nodeOrSelector === 'string') {    var nodeList = document.querySelectorAll(nodeOrSelector);    nodeList.forEach(function(item,index){      nodes[index] = item;    });    nodes.length = nodeList.length;  } else if (nodeOrSelector instanceof Node) {    nodes = {      '1': nodeOrSelector,      lenght: 1    };  }  nodes.addClass = function(classNames){    for (var i=0; i<nodes.length; i++) {      classNames.forEach(function(item){        nodes[i].classList.add(item);      });    }  };  nodes.setText = function(text) {    for (var i=0; i<nodes.length; i++) {      nodeList[i].innerHTML  = text;    }  };  return nodes;};// aliaswindow.$ = jQuery// 使用$('ul>li').addClass(['red','blue']);$('ul>li').setText('Hello jQuery');

|

以上是本人實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的jQuery對(duì)象。該對(duì)象接收一個(gè)參數(shù)剧防,可以是一個(gè)已經(jīng)獲取到的DOM對(duì)象植锉,也可以是一個(gè)選擇器字符串。jQuery方法返回的是一個(gè)自定義的節(jié)點(diǎn)對(duì)象峭拘,該對(duì)象上定義了addClass俊庇、setText等一系列操作方法。

4鸡挠、jQuery獲取DOM和JS選擇器獲取的DOM的區(qū)別與聯(lián)系

例如:

|

1

|

<div id='x'></div>

|

|

12

|

var div = document.getElementById('x')var $div = $('#x')

|

  • div 是由原生API獲取的元素節(jié)點(diǎn)對(duì)象辉饱,
    div.__proto__ === HTMLDivElement.prototype
    div.__proto__.__proto__ === HTMLElement .prototype
  • div 是jQuery對(duì)象實(shí)例,它包含了從jQuery繼承過(guò)來(lái)的很多方法和屬性 `div.proto === jQuery.prototype$div.proto .proto === Object.prototype`
  • div 變成 div: `(div)`
  • div 變成 div: `div[0] === div`
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拣展,一起剝皮案震驚了整個(gè)濱河市彭沼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌备埃,老刑警劉巖姓惑,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異按脚,居然都是意外死亡挺益,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門乘寒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人甫贯,你說(shuō)我怎么就攤上這事虹统”壹ǎ” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蚤氏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我踊兜,道長(zhǎng)竿滨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮于游,結(jié)果婚禮上毁葱,老公的妹妹穿的比我還像新娘。我一直安慰自己贰剥,他們只是感情好倾剿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蚌成,像睡著了一般前痘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上担忧,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天芹缔,我揣著相機(jī)與錄音,去河邊找鬼瓶盛。 笑死最欠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓬网。 我是一名探鬼主播窒所,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帆锋!你這毒婦竟也來(lái)了吵取?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锯厢,失蹤者是張志新(化名)和其女友劉穎皮官,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體实辑,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捺氢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剪撬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摄乒。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖残黑,靈堂內(nèi)的尸體忽然破棺而出馍佑,到底是詐尸還是另有隱情,我是刑警寧澤梨水,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布拭荤,位于F島的核電站,受9級(jí)特大地震影響疫诽,放射性物質(zhì)發(fā)生泄漏舅世。R本人自食惡果不足惜旦委,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雏亚。 院中可真熱鬧缨硝,春花似錦、人聲如沸评凝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奕短。三九已至宜肉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翎碑,已是汗流浹背谬返。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留日杈,地道東北人遣铝。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像莉擒,于是被迫代替她去往敵國(guó)和親酿炸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容