3、jQuery(AJAX)

1)jQuery是什麼?
本質上是一個JS的函數庫,極大地簡化了JS編程,從而實現比JS寫的更少但做的更多的效果。
jQuery是對JS的一些封裝,能用jQuery的肯定用jQuery,不能用的纔有JS。
首先肯定有和JS一樣的功能,即可以和JS對象相互轉換,那更多的功能是什麼?
A、HTML元素選取、操作和事件函數;
B、HTML DOM遍歷和修改;
C、CSS操作;
D、AJAX
2)jQuery怎麼用?
在使用jQuery之前需要先聊下jQuery的語法、選擇器和事件:
(1)jQuery語法:
jQuery語法非常簡單,就是選取HTML元素,並對選取的元素執行某些操作,即(selector).action()(selector).action(),其中表示jQuery;selector可以是this代表當前元素,也可以是具體的元素,比如p,還可以是p.test表示class=”test”的p元素或者是#test表示id=”test”的元素;action可以是hide等方法。
需要注意的是在所有jQuery函數的外面都有一個document ready函數,即文檔就緒事件,如下所示:
在這裏插入圖片描述
爲什麼要在jQuery代碼外面弄一個文檔就緒事件?因爲有這個,文檔才能在完全加載即就緒之後才能運行jQuery代碼,從DOM角度解釋就是需要等DOM加載完畢後才能對DOM進行操作,當然爲了簡單點,可以寫成如下所示:
在這裏插入圖片描述
上面這兩種寫法都是jQuery的入口函數,那在此回顧下JS的入口函數:
在這裏插入圖片描述
問題來了,二者的入口函數有什麼?
jQuery的入口函數是等HTML所有標籤即DOM加載完畢後才執行操作;
而JS的入口函數等所有內容,包括外部圖片之類的文件加載完畢後才執行操作。
所以執行JS入口函數的條件更高。
(2)jQuery選擇器:
既然jQuery需要選取HTML的元素,那就要用到選擇器,說到選擇器肯定會想到前面CSS選擇器,那jQuery選擇器和CSS選擇器區別在哪?CSS選擇器用$(“”)包起來就成了一個jQuery選擇器,和CSS選擇器一樣包括ID選擇器、類選擇器、標籤選擇器和層次選擇器,但CSS裏的僞類選擇器這裏稱之過濾選擇器(用:表示過濾)。
需要注意的是爲了更好區分二者的選擇器,jQuery一般使用ID選擇器,CSS用類選擇器。
還有就是:和[ ]這兩個符號有什麼區別?前者可以理解爲種類,後者是屬性,如下所示:
在這裏插入圖片描述
在這裏插入圖片描述

如果點擊第一行,則下面第一個按鈕不見第二個還在;
如果點擊第二行,則下面兩個按鈕都不見。
注:這裏的$(“:button”)就是過濾選擇器,過濾選擇器在表單中經常用到。
(3)jQuery事件:
上面提到的文檔就緒事件是指等待HTML中所有元素即DOM加載完畢後執行jQuery代碼,由此可知,事件就是當HTML中發生某些事件時所調用的方法,那具體的事件有哪些呢?最常見的是點擊元素(一般是按鈕,當然也可以是p這種元素即一段文字)、在元素上移動鼠標,這些屬於鼠標事件,比如click(單擊)、dbclick(雙擊)、mouseenter(當鼠標指針進入該元素時)、mouseleave(當鼠標指針離開該元素時)和hover(當鼠標指針懸停在該元素上時,即進入和離開的結合);鍵盤事件,比如keypress(鍵被按下,可以計算鍵被按下的次數)、keydown(鍵按下的過程)和keyup(鍵被鬆開的過程);表單事件,比如submit(表單提交事件,可以在該事件裏用alert方法即彈窗)、change(表單字段修改事件)、focus(當元素獲得焦點時發生該事件,比如在用戶名後面的輸入框輸入值時會在後面顯示一些提示語)和blur(當元素失去焦點時發生該事件,這種事件經常和focus事件配合使用);還有文檔/窗口事件,比如load、resize、scroll和unload。
熟悉jQuery的語法、選擇器和事件之後,就可以利用這些概念即“工具”去使用jQuery,在使用jQuery之前肯定要在HTML中引入jQuery:
兩種方法,一種是CDN引用,比如從百度、新浪等國內服務器引用jQuery,如下所示:
在這裏插入圖片描述
另一種是下載jQuery並放到和編寫的代碼一樣的目錄下,然後在代碼裏直接行內式,即在標籤中書寫script子標籤,通過src屬性引入jQuery函數庫,如下所示:
在這裏插入圖片描述
注:script標籤對裏爲什麼不加上type=”text/javascript”這個屬性了?因爲JS是現在所有瀏覽器中的默認腳本語言,所以不需要指定。
需要特別注意的是jQury版本問題,因爲jQuery版本很多,而且不兼容,所以開發小組組員一定要統一。
接下來就是使用jQuery了,jQuery的使用主要從jQuery效果、HTML、遍歷和ajax這四個方面展開:
(1)jQuery效果
上面jQuery語法裏提到jQuery是選取HTML中的元素,然後對元素進行操作,如何選取?前面也提到了,即選擇器+事件,那如何操作?這裏先聊下jQuery的隱藏和顯示,對應的API分別是hide()和show(),這兩個方法裏還可以指定兩個參數,分別是speed和callback,前者表示隱藏/顯示的速度,可以用slow、fast或者具體毫秒值表示;後者表示隱藏/顯示完成後執行的函數名稱(當然也可以只寫一個),如下所示:
在這裏插入圖片描述在這裏插入圖片描述
注:第二幅圖裏hide函數裏第二個參數linear是一個字符串,表示過渡使用哪種緩動函數,jQuery提供的有linear和swing。
如果設置兩個按鈕分別表示隱藏和顯示比較麻煩,那就用toggle()方法,該方法用於切換hide()和show()方法,和隱藏、顯示方法一樣,該方法也可以設置兩個參數。
jQuery效果裏除了隱藏和顯示外,還有淡入淡出、滑動、動畫、停止動畫等,因爲不是專門學前端,所以這些就不在這裏展開。
(2)jQuery HTML
jQuery非常重要的一個用途是操作DOM,即操作HTML元素和屬性,通俗講就是對HTML元素的內容和屬性進行增刪改查,爲此提供了一系列的方法,使其操作變得很容易,比如jQuery獲取HTML的內容和屬性的方法有用text()來設置或者返回所選元素的文本內容、html()來設置或者返回所選元素的內容(包括HTML標記)、val()來設置或者返回表單字段的值,如下所示:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
上面的方法是獲取元素即標籤對裏的內容,如果要獲取開始標籤裏的屬性,怎麼獲取?用attr()方法,如下所示:
在這裏插入圖片描述
在這裏插入圖片描述
上面提到的四種方法是查詢元素的內容和屬性,如果是要對內容和屬性進行修改怎麼辦?可以直接在方法括號里加上要修改的內容即可,如下所示:
在這裏插入圖片描述
當然也可以加上回調函數,兩個參數中i表示被選元素列表中當前元素的下標,origText表示改變前的舊值,如下所示:
在這裏插入圖片描述
同理可得,attr()也可以設置元素的屬性值(可以多個)和回調函數,如下所示:
在這裏插入圖片描述
在這裏插入圖片描述
注:這裏的回調函數裏兩個參數含義和前面的一樣,這個函數作用就是在原來的網址上添加/jquery,所以結果會跳轉到其他頁面。
上面的方法都是在已有的元素內進行查詢和修改,如果想對元素進行增怎麼辦?分兩種情況,一種是在被選元素內部插入新的內容,就用append()或者prepend(),前者是在被選元素的尾部插入內容,後者是在開頭插入內容;另一種是在被選元素的外部插入新的內容,就用after()和before(),前者是被選元素之後插入內容,後者是被選元素之前插入內容。問題是怎麼這些想要插入的內容怎麼創建?三種方法:text/HTML、jQuery 或者 JavaScript/DOM,如下所示:
在這裏插入圖片描述
講完元素的增改查之後,那就要聊下如何刪除元素?
一般有兩種方法:remove()和empty(),前者是刪除被選元素及其子元素,後者是隻刪除被選元素的子元素,而被選元素本身不刪除。
需要注意的是remove()方法裏可以添加一個參數,從而對被刪元素進行過濾,這個參數可以是任何jQuery選擇器的語法,比如刪除class=”italic”的所有p元素:
在這裏插入圖片描述
講完HTML裏元素的增刪改查,再聊下jQuery操作CSS的方法:
比如addClass()是向被選元素中添加一個或者多個類:
在這裏插入圖片描述
removeClass()是從被選元素中刪除一個或者多個類:
在這裏插入圖片描述
toggleClass()是對被選元素進行添加/刪除類的切換操作:
在這裏插入圖片描述
css()方法是設置或者返回被選元素的一個或多個樣式屬性:
在這裏插入圖片描述
jQuery除了可以對HTML中元素的內容和屬性進行增刪改查、CSS中類的增刪和屬性的查詢及修改外,還可以對查詢和修改元素的寬度及高度等。
(3)jQuery 遍歷
這個和DOM及其CSS相關,即想要選取某個HTML元素可以根據這個元素和其他元素的關係來查找,方法有很多,比如parent()是選取被選元素的上一級父元素,parents()是選取所有的祖先元素,即包括父元素、爺元素及其以上,parentUtil()是返回介於兩個給定元素之間的所有祖先元素;上面是談上一輩的方法,那肯定有下一輩的方法,比如children()表示返回被選元素的子元素,而find()表示包括子元素及其以下的所有後代元素;除了父與子,還有同胞元素,比如next()表示返回被選元素的下一個同胞元素,即只返回一個元素,nextAll()返回所有的同胞元素,即不只是下一個元素;選擇器默認選擇的都是所有,如果想要選擇特定的元素則需要過濾,比如first()表示返回被選元素的首個元素,即符合要求的元素可能很多,但只選取第一個,同理可得last()表示符合要求的所有元素中的最後一個,如下所示:
在這裏插入圖片描述
注:div p表示div中全部後代p,由上圖可知有兩個元素滿足,所以用first()或者last()進行過濾。
(4)jQuery AJAX
首先明確下AJAX是什麼?異步JS和xml,它是和服務器交換數據的技術,可以在不重載全部頁面的情況下,實現對部分網頁的更新,使用AJAX的例子有百度搜索框、高德地圖等,jQuery實現AJAX的方法有很多,這裏主要聊下以下三種:
第一種是load()方法,這是jQuery中簡單但強大的AJAX方法,可以從服務器加載數據,並把返回的數據放入到被選元素中,如下所示:
在這裏插入圖片描述

由上圖可知,load()方法裏的參數一般是希望加載的URL地址和load()方法完成後執行的回調函數,其中回調函數參數中的responseTxt表示調用成功時的結果內容,statusTXT表示調用的狀態,xhr表示xmlHttpRequest對象,這個對象有什麼用?後面會講。load()方法除了URL和回調函數這兩個參數外,還有參數data,即向服務器發送的key/value集合,這個可選,因爲默認是get,所以可以不選默認直接在地址欄拼接發送。
第二種AJAX方法是.get()/.get()/.post(),分別是使用AJAX的HTTP GET或者POST請求從服務器加載數據,二者不同之處在於作用不同:前者是從指定的資源請求數據(可能返回緩存數據),後者是向指定的資源提交要處理的數據,當然還有不同點在於傳輸的數據量大小不同、安全性不同、編碼不同、可否緩存等,如下所示:
在這裏插入圖片描述
在這裏插入圖片描述

第三種AJAX方法是$.ajax(),這種方法用於執行異步HTTP請求,什麼時候用?如果出現其他方法不能完成的請求時才用,如下所示:
在這裏插入圖片描述
上面的jQuery中的AJAX方法是簡單,這是因爲jQuery本身是對於JS的封裝,所以底層用JS是如何實現AJAX的呢?
在聊如何JS實現AJAX之前,回顧下AJAX的名字中最後一個X,即XML的意思,但在上面的jQuery方法中好像沒出現?不,出現了,上面提到了回調函數的參數裏有一個是xhr,其實就是XMLHttpRequest對象,這說明底層用到這個對象,這樣也才能和AJAX名字中最後一個字母對應上,所以由此可以推出JS實現AJAX的第一步是獲取
XMLHttpRequest對象,是不是直接new一個對象即可?但不同瀏覽器new的對象不同,比如最新版本的瀏覽器都是XMLHttpRequest對象,但老版本的需要new其他對象,所以需要不斷try-catch,第一步相對比較麻煩;第二步就是用這個對象裏的open方法打開與服務器的連接,默認是get請求和異步傳輸;第三步是用這個對象裏的send方法發送請求,如果是get請求,data可以是null,如果是post請求那就是鍵值對集合;第四步是註冊監聽,一共有五個狀態,我們一般只關心最後一個狀態,即服務器響應結束狀態,註冊監聽代碼如下所示:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章