【JavaScript】4.初識 jQuery

本來這一篇要寫JavaScript的事件處理的,但是內容好多啊,這一套那一套的,看得有點暈……查資料的時候發現好些東西大家都是用 jQuery 實現的,據說挺好上手的,那我就先看看 jQuery,之後和JS對照着學吧。

jQuery是一個JavaScript函數庫,它和JS的聯繫與區別是:

JavaScript是用於Web客戶端開發的腳本語言,Ajax是基於JS語言,主要組合JS、CSS、XML三種技術的新技術,是用於創建交互式網頁應用的網頁開發技術。jQuery是JS的框架,基於JS語言,集合Ajax技術開發出來的JS庫,封裝JS和Ajax的功能,提供函數接口,大大簡化了Ajax,JS的操作。

開始了,奧裏給!


目錄

1. jQuery的引入

2. jQuery的功能

2.1 基礎語法

2.2 jQuery選擇器

2.3 jQuery處理事件

2.4 jQuery修改元素屬性

2.5 jQuery修改元素樣式

2.6 注意:jQuery中常用屬性的獲取

(1) 寬高屬性

(2)位置屬性


 

1. jQuery的引入

可以通過多種方法在網頁中添加 jQuery:

  • 從 jquery.com 下載 jQuery 庫, 將下載的文件放在網頁的同一目錄下,通過HTML的<script>標籤引用:
<head>
<script src="jquery-1.10.2.min.js"></script>
</head>
  • 從 CDN (內容分發網絡)中載入 jQuery,通過下面的代碼引用:
<head>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</head>

可選用的CDN包括: 

國內推薦站點:

Staticfile CDN:src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"

百度CDN:src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"

新浪CDN:src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"

又拍雲 CDN:src="https://upcdn.b0.upaiyun.com/libs/jquery/jquery-2.0.2.min.js"

國外推薦站點:

Google CDN:src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"

Microsoft CDN:src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js"

我用的是第二種方法,因爲這些大公司的CDN比較流行,用戶訪問你網站之前很可能在訪問別的網站時已經將jQuery緩存在瀏覽器中了,所以能加快網站的打開速度,懶洋洋美滋滋。

當然,剛剛那句話只是引入了jQuery的庫,我們還要自己編寫很多代碼。對於少量的代碼,我們可以把它放在<head>部分的<script>標籤內:

<head>
<!--引入jQuery庫-->
<script src="http://code.jquery.com/jquery-1.6.min.js"></script>

<!--jQuery代碼-->
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>
</head>

爲了便於維護,很多時候,我們會把jQuery函數放到獨立的.js文件中,因此在<head>部分引入對應的文件:

<head>
<!-- 引入jQuery庫 -->
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>

<!-- 引入獨立的jQuery代碼 -->
<script src="my_jquery_functions.js"></script>
</head>

2. jQuery的功能

看到這樣一個說法,jQuery的使用類似於CSS的選擇器,可以方便的操作HTML元素。剛開始看的確是有這樣的感覺。jQuery 語法是爲 HTML 元素的選取編制的,通過選擇器,選取(或者查詢query)HTML元素,然後像用CSS進行格式設置一樣,對元素執行某些操作(action)。

2.1 基礎語法

jQuery的基礎語法是: $(selector).action()

  • 美元符號$:定義 jQuery,這也是jQuery與JS最直觀的區別。
  • 選擇符(selector):"查詢"和"查找" HTML 元素。
  • action(): 執行對元素的操作。

下面是最常見的例子:

  • $(this).hide()    隱藏當前元素

  • $("p").hide()    隱藏所有 <p> 元素

  • $("p.test").hide()     隱藏所有 class="test" 的 <p> 元素

  • $("#test").hide()   隱藏所有 id="test" 的元素

不管是用JS還是jQuery等JS框架,都需要在進行交互之前確定整個DOM已經加載(這個之後會講)。在直接JavaScript編程時,用如下方式等待窗口加載:

window.onload = function(){
    //Do whatever
}

在jQuery中,等價的操作時將所有jQuery函數寫在一個 ready() 函數中:

$(document).ready(function(){
   // 開始寫 jQuery 代碼...
});

對比 $(selector).action() 結構來分析一下,$(document) 指選擇窗口文檔;ready()方法,等同於在就緒事件觸發時調用一個內部匿名函數。

特殊的是,因爲ready() 方法只能用於當前文檔,無需使用選擇器,也可以使用下面的簡寫:

$(function(){
   // 開始寫 jQuery 代碼...
});

這裏還有一個小知識點—— jQuery 入口函數與 JavaScript 入口函數的區別:

  •  jQuery 的入口函數是在 html 所有標籤(DOM)都加載之後,就會去執行。
  •  JavaScript 的 window.onload 事件是等到所有內容,包括外部圖片之類的文件加載完後,纔會執行。

2.2 jQuery選擇器

噹噹噹當,就像剛纔說的,jQuery的選擇器是基於已經存在的CSS選擇器的,所以這部分內容可以快快過一下就好~開心

對了,別忘了jQuery 中所有選擇器都是以美元符號開頭的——$()

  • 元素選擇器:$("p")  在頁面中選取所有 <p> 元素
  • #id 選擇器:$("#test") 選取id="test"的元素
  • .class 選擇器:$(".test")  class="test" 屬性的元素

當然,還有複合的用法,下面是一些比較常見的,大家可以在教程網站上在線看一看效果,我就不多說了:

https://www.runoob.com/jquery/jquery-selectors.html

2.3 jQuery處理事件

在事件中,我們經常聽到的術語“觸發”或者“激發”,比如:當您點下按鈕時,就觸發了click事件。頁面的響應叫做事件。事件處理程序指的是當 HTML 中發生某些事件時所調用的方法。常見的事件有:

大家可以在教程網站上嘗試一下這些代碼的操作:https://www.runoob.com/jquery/jquery-events.html

下面我只寫幾個簡單的例子,大家體會一下 jQuery 中事件處理器與元素關聯的方法:

//單擊事件
$("p").click(function(){
  $(this).hide();
});

//雙擊事件
$("p").dblclick(function(){
  $(this).hide();
});

//焦點事件
$("input").focus(function(){
  $(this).css("background-color","#cccccc");
});

$("input").blur(function(){
  $(this).css("background-color","#ffffff");
});

2.4 jQuery修改元素屬性

通過 jQuery 選擇器選擇了元素之後,還可以應用 jQuery 函數修改元素的屬性。

對於下面這樣一個標籤元素:

<img id='img' src="1.jpg" alt='1' class="imgs"></img> 

我們通常將 id、src、alt、class等稱爲屬性,或者元素屬性。但是,當瀏覽器對標籤元素進行解析時,會將元素解析爲Dom對象,相應的,元素屬性也就解析爲Dom屬性。

元素屬性和Dom屬性只是在我們對元素進行不同解析時的不同稱呼,但是元素屬性和Dom屬性並不一定完全相同,比如<img>的class屬性,在表現爲元素屬性時屬性名是class,在表現爲Dom屬性時,屬性名爲className。在JavaScript中,我們可以直接獲取或設置Dom屬性。

在jQuery中,可用 attr() 方法修改選中的元素的屬性,該參數的第一個參數是訪問的屬性,另一個參數是設置的新值:

$("button").click(function(){
  $("#my-link").attr("href","https://blog.csdn.net/qq_45427038"); //修改id爲my-link的herf屬性
});

也可以使用“鏈式函數調用”,將選擇器和方法分成兩句話來寫。下面的兩組代碼是等效的:

//添加屬性 disabled = "disabled"
$('#submitButton').attr('disabled','disabled');

//鏈式調用
var submit = $('#submitButton');
submit.attr('disabled','disabled');

attr() 方法也允許您同時設置多個屬性:

$("#my-link").attr({
    "href" : "https://blog.csdn.net/qq_45427038",
    "title" : "MQ的博客"
});

//另一種方法
$("#my-link").attr("href","https://blog.csdn.net/qq_45427038").attr("title", "MQ的博客");

2.5 jQuery修改元素樣式

jQuery 擁有若干進行 CSS 操作的方法。常用的有以下幾種:

  • addClass()  向被選元素添加一個或多個類
  • removeClass()  從被選元素刪除一個或多個類
  • toggleClass()  對被選元素進行添加/刪除類的切換操作

動態的練習可以在https://www.runoob.com/jquery/jquery-css-classes.html上做。

這裏說一下toggleClass(),還挺有意思的。toggleClass()函數用於切換類的應用,如果選中的元素沒有應用類則添加,否則刪除類。可以看出,toggleClass() 這個方法的側重點在指定樣式的切換,一般配合點擊、 鼠標懸浮 、鼠標劃過事件。

但是toggleClass()方法還有另一個可選的參數——switch參數。若switch爲true,則只進行添加操作,如爲false,則只刪除類,感覺就變成了一個一次性的變化操作了。

順便說一個和toggleClass()很像的方法,toggle()。toggle() 方法在被選元素上進行hide()和show()之間的切換,也就是如果一個元素是隱藏的,則運行 show(),如果一個元素是可見的,則運行 hide(),該方法也會造成一種切換的效果。

jQuery css() 方法用於設置或返回被選元素的一個或多個樣式屬性:

//返回css屬性: css("propertyname"); 
$("p").css("background-color");  //返回首個<p>元素的background-color值

//設置css屬性:  css("propertyname","value");
$("p").css("background-color","yellow");  //爲所有匹配元素設置background-color值

//同時設置多個屬性: css({"propertyname":"value","propertyname":"value",...});
$("p").css({"background-color":"yellow","font-size":"200%"}); //爲所有匹配元素設置background-color和font-size屬性

2.6 注意:jQuery中常用屬性的獲取

對於一些常用的屬性,例如width、height之類的,使用 attr("width") 和 css("width") 是無法正常獲取其值的,但是這些屬性的值可以直接訪問。

(1) 寬高屬性

注意:返回的高度、寬度均爲數字,不帶px

(2)位置屬性

3. jQuery效果

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