亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jquery原理以及學習技巧介紹

2019-11-20 11:17:59
字體:
來源:轉載
供稿:網友

對于JQuery,想必大家都很熟悉。目前,很多web項目,在實施的過程中,考慮到各瀏覽器原生JS API的兼容性,大都會選用JQuery或類似于JQuery這樣的框架來進行網頁效果開發。JQuery上手簡單,也很容易學,即使是剛接觸JQuery的開發人員,借助JQuery手冊,也很快能在項目中使用開發。

雖然JQuery相對簡單,但要全面掌握,且快速靈活的使用它也并不那么容易,它提供了很多方法,包含了網頁開發的各個知識面,所以要全面掌握這些知識點,個人認為還是需要對jquery有深入的理解,對這些知識點做分類整理記憶,這樣你才能面對一些JQuery代碼的時候不會感到迷惑,才會知道采用何種方式實現某個特效是最佳實踐,才能快速的采用JQuery來進行項目開發。

簡單模擬JQuery

JQuery里的代碼是出了名的刁鉆,里面的奇技淫巧太多太多,如果你想通過源碼來學習JQuery,沒有一定的功底是很難做到的。所以下面寫一個非常簡單的庫來模擬JQuery,方便大家理解。
總體代碼

(function(window) { var doc = window.document; // -------------代碼段二 ------------------ var JQuery = function(selector) {  return new JClass(selector); }  // --------------- 代碼段三 ---------------- JQuery.html = function(obj) {  if(obj && obj.nodeType === 1) {   return obj.innerHTML;  } }  // ---------代碼段一 -------------- var JClass = function(selector) {  if (selector.nodeType ) { // 如果傳入的是DOM元素 this.length = 1;  }else if(selector.charAt(0) === '#') { //如果傳入的是'#..'形式 this.length = 1;   this[0] = doc.getElementById(selector.slice(1));  }else if(typeof selector === 'string') {   //傳入的是字符串,假設全部為html標簽 ,如'div' 'p'等   var nodes = doc.getElementsByTagName(selector);   this.length = nodes.length;   for(var i=0,len=nodes.length;i<len;i++) {    this[i] = nodes[i];   }  }else { //都不是的話,就不識別咯   this.length = 0;  } };  // ------------ 代碼段四 -------------------- JQuery.prototype.html = function() {  if(this[0]) {   return JQuery.html(this[0]);  } } JClass.prototype = JQuery.prototype;  // ------------ 代碼段五 --------------- window.$ = window.JQuery = JQuery; }(window));

首先,先看代碼段一,我們創建一個javascript引用類型,可以根據該引用類型以及輸入的參數創建一個實例對象,輸入的參數模擬JQuery選擇參數,但沒有JQuery強大,支持部分類型。

我們知道,可以通過new JClass(...)來構造一個實例對象,這沒問題,但是JClass也是一個函數,可以被直接調用,而直接調用并不是我們想要的結果,為了防止JClass被開發人員直接調用,我們不能將JClass暴露給開發人員,那我們只能通過代碼段二方式來構造JClass實例對象。

在代碼段二,我們可以將JQuery暴露給開發人員,因為無論是通過new JQuery()還是JQuery(),返回的都是JClass實例對象,這是我們要的結果。

在網頁開發過程中,為了代碼的復用,我們常常會提供一些工具方法來方便開發,既然JQuery是完全暴露給開發人員使用的,我們完全可以將這些工具方法作為JQuery的靜態屬性。具體可參照代碼段三,當然,我們還可以按照這種方式添加其它的工具方法 如text,val,attr,css ........

這些工具方法確實不錯。JClass實例對象(封裝了DOM)也存在一些公用的方法,正好這些方法也可以借助工具方法來實現,那怎么為JClass實例對象創建公用方法呢? 可以通過代碼段四的方式實現(如果對這里不理解,請百度JS的原型繼承概念) 。

最后可通過代碼段五,將JQuery取個別名 $ 且作為全局變量暴露出來。然后將代碼引入到HTML文件中進行測試,可參照下面代碼:

<html><head> <title>jquery-t2</title> <script src="JQ.js"></script></head><body> <div style="margin:10px 10px;">  <span id='result'>  點擊看效果  </span> </div> <div id='tst'>div文本值</div></body><script> alert($.html(document.getElementById('result '))); //點擊看效果 alert($('span').html()); //點擊看效果 alert($('#tst').html()); //div文本值</script></html>

JQuery的知識點分類

通過上面模擬的JQuery庫,我們應該可以大概知道JQuery的主要功能:通過強大的選擇器獲得DOM元素,然后針將這些DOM元素的日常操作封裝成對應的方法,如取值、賦值、修改、刪除等,同時JQuery還為網頁開發提供了一些工具類方法,如each、ajax、isArray、extend等。所以總的來說,JQuery知識點可分為三大類:

  • JQuery選擇器
  • JQuery對象的操作,如DOM操作、表單操作等
  • JQuery的工具方法
  • JQuery插件編寫(知識擴展)

JQuery太流行了,網上的資料太多太多,以致于很多初學者根本不知道從哪學起,這里看一篇博客,那里翻一翻源碼,收集了大量的資料,最后發現根本沒時間學習,即使花了大量的時間學習,學習到的JQuery也成不了一個體系,到最后全部忘記了。開發的時候又只能去翻手冊,一直翻手冊能寫出好的代碼么?不可能吧。

下面我分享一下個人認為比較好的資料供初學者一步一步學習。 

  • JQuery入門(書籍+一篇博客)
  • 鋒利的JQuery(第二版)
  • JQuery設計思想
  • JQuery深入學習(深入學習JQuery和javascript很好的資料)
  • JQuery源碼分析系統

JQuery的一些概念

學習永遠都不是記憶,記憶的東西遲早會被遺忘。真正要學習一門技術,最基本的原則就是要理解它。學習JQuery也是,在學習JQuery的知識點時,你首先要理解一些概念來輔助你理解這些知識點。 JQuery中的概念主要有這三個: JQuery()、JQuery對象和DOM對象。

先說DOM對象,這個很簡單,它定義了訪問HTML文檔對象的一套屬性、方法和事件,沒有JQuery前,我們通常直接操作DOM,比較熟悉的API有getElementById 、GetElementByTagName等。

JQuery,它在JQuery中有個別名 $ 。通過上面章節的模擬代碼(對應模擬代碼中的JQuery)可知,其實就是一個函數,說得更細致點就是JQuery對象的工廠方法,它可以根據不同的入參來構造JQuery對象,如:

  • 字符串表達式。如 $('span') 、$('span .class')、$('#id')
  • HTML 代碼片段。如 $('<span>text</span>')
  • DOM元素。 如$(dom) //假設 var dom = document.getElementById('id');
  • JS Function 。 如 $(function(...) { ... } ); 一般對象或數組。如 { } 、[ ... ]等

JQuery除了能創建JQuery對象的同時,JQuery自身也有很多靜態方法,也可以稱為工具方法,如 each、ajax、trim等。這些工具方法不僅在網頁設計時常常會被用到,而且也會被當作工具方法用來實現JQuery對象的原型方法。

JQuery對象,非常重要的一個概念,類似于模擬代碼中的JClass實例,通常是通過JQuery構造出的實例。在JQuery中,我們常常見到的JQuery對象是這樣的: $('#id') 、$('div')等。關于JQuery對象我們要明白以下幾點:

1、JQuery對象繼承了JQuery原型(prototype)的所有屬性和方法
2、JQuery對象不是數組,但是采用了類似數組的結構來存儲元素,而且存儲的元素是通過選擇器獲取得到的DOM對象。參照上面章節的模擬代碼(JClass實例對象),JQuery對象有個length屬性,表示當前對象里存儲DOM對象的個數,而這些通過選擇獲得的DOM對象,是采用下標為0、1、2、3 ... 作為屬性名來進行存儲的。所以,根據以上特性,我們完全可以通過下面這種方式來訪問元素:

var objs = $('div');for(var i=0,len=objs.length;i<length;i++) { var o = objs[i]; //獲取dom元素 ... ...}

綜合來說,JQuery、JQuery對象、DOM對象三者之間的關系是: JQuery是個工廠方法,用來構造JQuery對象; JQuery對象是個類數組對象,里面存儲了DOM對象;

理解了三者之間的關系,我們在理解下面知識點時,相對來說也就比較容易了:

關于過濾選擇器如何理解? 如$('div:first') 。
如果理解了JQuery對象的內部結構,理解JQuery的過濾選擇器就很容易了,如 :first 其實就是取JQuery對象屬性為'0'的對象(封裝成JQuery對象),同理 :last取的是屬性為 length-1 的元素,:eq(index)取的是屬性為index的元素。

在JQuery中,如何驗證某個元素是否為空?

var $o = $('div .class');if($ == null) { // 錯誤的做法 //什么都沒找到 ...... } //正確的做法 if($o.html() == null) { //什么都沒找到 ... ... } //正確的做法 if($o.length) { //什么都沒找到... ... } 

JQuery對象和DOM對象如何轉換?

var dom = document.getElementById('id');// DOM對象轉換成JQuery對象var $dom = $(dom); // 參照JQuery對象的構造方式// 將JQuery對象轉換成DOM對象for(var i=0,len=$dom.length;i<length;i++) { var o = $dom[i]; //獲取dom元素 ... ...}

總結

關于JQuery,上手雖然簡單,但如果要高效快速的使用開發,還是需要好好理解下JQuery的。以上只是個人學習過程中的一些感悟和整理,建議各位在學習時也按照自己的思維習慣形成一套自己的知識體系,一來便于日后的開發,二來也便于查閱別人的代碼。最后附注一些有意思的小問題,各位有興趣就思考下吧。

問題一. 你覺得下面哪種方式代碼好一點?為什么?

 // 方式一var $text = $("#text");var $ts = $text.text();//方式二var $text = $("#text");var $ts = $.text($text);

問題二. 下面代碼中的this是什么呢?大概實現原理有什么?

全選復制放進筆記$('#box').click(function(){  var obj = this; ... ...}

以上就是關于jquery原理以及學習技巧介紹,內容很充實,信息量很大,需要同學耐心學習,希望從中有所收獲吧。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99精品久久久久久琪琪| 一本久久综合亚洲鲁鲁| 国产成人精彩在线视频九色| 亚洲精品自在久久| 欧美黑人性猛交| 欧美日韩xxx| 国产精品免费久久久久影院| 久久久精品一区| 国产精品吹潮在线观看| 欧美电影免费在线观看| 欧美一区三区三区高中清蜜桃| 久久综合伊人77777尤物| 亚洲美女动态图120秒| 欧美另类极品videosbest最新版本| 亚洲无线码在线一区观看| 91国产视频在线播放| 久久久在线免费观看| 91精品久久久久久久久久另类| 亚洲欧洲成视频免费观看| 欧美一级淫片videoshd| 亚洲电影天堂av| 国产精品一区二区久久国产| 欧美精品激情在线观看| 国产主播欧美精品| 欧美成人精品h版在线观看| 国产一区二区三区中文| 久久国产一区二区三区| 国产精品欧美久久久| 亚洲视频免费一区| 亚洲人在线观看| 久久露脸国产精品| 精品在线欧美视频| 蜜臀久久99精品久久久久久宅男| 色吧影院999| 亚洲理论在线a中文字幕| 欧美精品videossex性护士| 国产精品第一第二| 丝袜一区二区三区| 久久久久久91香蕉国产| 91精品视频免费看| 68精品国产免费久久久久久婷婷| 日韩av最新在线| 欧美性xxxxhd| 精品国产31久久久久久| 国产日韩欧美视频在线| 国产综合色香蕉精品| 色婷婷av一区二区三区在线观看| 5566日本婷婷色中文字幕97| 欧美与欧洲交xxxx免费观看| 青青久久av北条麻妃黑人| 97在线精品国自产拍中文| 欧美美女15p| 久久伊人精品视频| 欧美午夜性色大片在线观看| 久久久久久久久综合| 亚洲欧洲成视频免费观看| 中文字幕欧美亚洲| 国产精品video| 亚洲精品小视频在线观看| 在线成人激情黄色| 亚洲国产精品久久91精品| 国产午夜精品全部视频在线播放| 91精品视频在线播放| 国产精品欧美亚洲777777| 国产原创欧美精品| 亚洲欧洲第一视频| 久久人人爽国产| 清纯唯美日韩制服另类| 97色在线播放视频| 久久久久久成人精品| 久久99久国产精品黄毛片入口| 欧美午夜精品久久久久久久| 国产欧美一区二区三区久久人妖| 欧美大片在线看| 久久91亚洲人成电影网站| 成人网欧美在线视频| 国产精品96久久久久久| 日韩有码视频在线| 中文字幕精品在线视频| 精品久久在线播放| 欧美电影在线观看高清| 亚洲第一精品久久忘忧草社区| 国产视频精品自拍| 欧美网站在线观看| 精品成人av一区| 欧美大肥婆大肥bbbbb| 中文字幕精品国产| 国产精品精品视频| 日韩欧美a级成人黄色| 日韩中文字在线| 欧美日韩高清在线观看| 久久精品国产v日韩v亚洲| 亚洲第一色中文字幕| 国产精品电影观看| 国产男人精品视频| 日韩一区二区久久久| 久久久女人电视剧免费播放下载| 92版电视剧仙鹤神针在线观看| 亚洲性日韩精品一区二区| 欧美日韩国产999| 欧美丝袜一区二区三区| 中文字幕少妇一区二区三区| 日韩中文理论片| 在线观看欧美日韩国产| 国产精品精品久久久久久| 精品精品国产国产自在线| 亚洲国产精品va在看黑人| 国产乱肥老妇国产一区二| 草民午夜欧美限制a级福利片| 一个人看的www久久| 伊人久久精品视频| 91亚洲va在线va天堂va国| 国产成人免费91av在线| 亚洲综合精品伊人久久| 欧美人与性动交| 国产福利精品av综合导导航| 欧美日韩第一视频| 国产一区二区三区免费视频| 欧美限制级电影在线观看| 亚洲女同性videos| 最近2019好看的中文字幕免费| 啊v视频在线一区二区三区| 亚洲国产精品成人精品| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲第一偷拍网| 中文字幕免费精品一区高清| 欧美日韩激情视频8区| 一区二区三区国产在线观看| 国产91色在线|免| 久久伊人精品天天| 精品视频在线播放| 日韩欧美中文第一页| 午夜精品久久久久久久99热| 日韩av电影手机在线观看| 久久免费视频在线观看| 国产v综合ⅴ日韩v欧美大片| 亚洲精品少妇网址| 国产午夜精品一区理论片飘花| 国产精品电影网站| 国产精品日韩欧美大师| 国产精品欧美激情在线播放| 中文字幕日韩精品有码视频| 国产精品高潮呻吟久久av野狼| 国产成人精品在线播放| 精品视频偷偷看在线观看| 成人a视频在线观看| 亚洲精品在线视频| 亚洲一区二区少妇| 欧美亚洲成人免费| 色婷婷亚洲mv天堂mv在影片| 不卡在线观看电视剧完整版| 日本欧美黄网站| 91成人精品网站| 免费97视频在线精品国自产拍| 欧美日韩成人在线视频| 日韩精品在线视频观看| 欧美在线观看网站| 亚洲毛片在线看| 精品色蜜蜜精品视频在线观看| 欧美日韩高清在线观看| 欧洲一区二区视频| 久久久之久亚州精品露出| 国产精品中文字幕久久久| 日韩精品在线影院|