什麼是 jQuery ?
1. jquery的介紹
jQuery 是一套物件導向式簡潔輕量級的 JavaScript Library。透過 jQuery 你可以用最精簡少量的程式碼來輕鬆達到跨瀏覽器 DOM 操作、事件處理、設計頁面元素動態效果、AJAX 互動等。
簡單來說 jquery就是用javascript編寫出來的 , 而jquery的目的是為了簡化javascript。
2. 如何使用jquery
方法一
先下載 jQuery Library http://jquery.com/download/
接著將此 JS 檔放進你網頁 HTML 的 <head>
及 </head>
之間
<!DOCTYPE html> <html> <head> <!-- 引入jquery --> <script src="你的 jQuery 檔案路徑"></script> </head> <body> </body> </html>
方法二
透過 Google CDN 載入 jQuery
<!DOCTYPE html> <html> <head> <!-- 引入jquery --> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> </head> <body> </body> </html>
3. jquery 與 javascript的差別
獲取ID
javascript
document.getElementById('idName')
jquery
$('#idName')
獲取Class
javascript
document.getElementsByClassName('classname')
jquery
$('.className')
說明 : 由上述兩個例子而見 , jquery是不是省去了很多語法呢 ?
4. jquery語法
取得選取到的元素之屬性值
.attr(attributeName)
例如,取得第一個連結的 title 值:
$('a').attr('title');
替選取到的元素設定屬性值
.attr(attributeName, value)
例如,替所有連結的 title 屬性設為 Enjoy jQuery:
$('a').attr('title', 'Enjoy jQuery');
你也可以用 key/value object 的方式來替所有匹配到的元素設定多個屬性值
.attr(attributes)
例如,同時改變 alt 和 title 屬性:
$( "#greatphoto" ).attr({ alt: "Beijing Brush Seller", title: "photo by Kelly Clark" });
移除元素屬性也很簡單
.removeAttr(attributeName)
例如,移除所有連結的 title 屬性:
$('a').removeAttr('title'); // 上面同等於這樣做 $('a').attr('title', null);
對於 class,jQuery 另外提供個別的函式來作 class 增刪的動作,這是為了可以方便疊加與移除特定的 class。
增加 class:
.addClass(className)
例如,幫所有的段落加入 selected 和 highlight 類別:
$('p').addClass('selected highlight');
移除 class:
.removeClass(className)
例如,移除 id 為 wrapper 的元素其 blue 這個類別:
$('#wrapper').removeClass('blue');
val,一個很常用到的方法,用來取得和設定表單元素的 value 值:
.val() // get .val(value) // set
例如,取得表單元素的值:
// 取得下拉選單 (select box) 的值 $('select.foo').val(); // 取得 checkbox 欄位的選取值 $('input:checkbox:checked').val(); // 取得 radio 欄位的選取值 $('input:radio[name=bar]:checked').val();
例如,設定表單元素的值:
// HTML <input type="text"> // 設定欄位值 $('input').val('Hello World!'); // 設定後的結果 <input type="text" value="Hello World!">
傳統 JavaScript 在處理 CSS 的問題上簡直頭大,設定一個 background-color 你得先知道其實要改用 elem.style.backgroundColor;對透明度 opacity 設定上你要了解舊 IE 是用 filter··。jQuery 的寫法很簡單,就直接用 key/value 成對的一組屬性來設定,我們只要知道 CSS 的表達式就沒問題。
取得第一個匹配到的元素之樣式:
.css(propertyName)
例如,取得第一個段落的字體顏色:
$("p").css("color", "red");
替所有匹配到元素設定一種樣式:
.css(propertyName, value)
例如,替所有段落的透明度設為半透明:
$('p').css('opacity', '0.5'); // 是的,設 opacity 就可以,jQuery 已經幫你處理好跨瀏覽器問題
你也可以用 key/value 對的方式指定給所有匹配的元素多個樣式:
.css(properties)
例如,替所有段落的字體設為紅色,背景設為藍色:
$('p').css({ 'color': 'red', 'background-color': 'blue' });
還有很多很多的function可以上jquery查詢 , 或者遇到問題的時候在上網爬文~
5. jquery ajax 🔥超級重要🔥
首先我們先來了解什麼是 Ajax,AJAX 即「Asynchronous JavaScript and XML」 (非同步的JavaScript與XML技術),指的是一套綜合了多項技術的瀏覽器端網頁開發技術。
傳統的 Web 應用允許用戶端填寫表單 (form),當送出表單時就向網頁伺服器傳送一個請求,伺服器接收並處理傳來的表單,然後送回一個新的網頁,但這個做法浪費了許多頻寬,因為在前後兩個頁面中的大部分HTML碼往往是相同的,由於每次應用的溝通都需要向伺服器傳送請求,應用的回應時間依賴於伺服器的回應時間,這導致了使用者介面的回應比本機應用慢得多。
與此不同,AJAX 應用可以僅向伺服器傳送並取回必須的資料,並在用戶端採用 JavaScript 處理來自伺服器的回應,因為在伺服器和瀏覽器之間交換的資料大量減少,伺服器回應更快了,同時很多的處理工作可以在發出請求的用戶端機器上完成,因此 Web 伺服器的負荷也減少了。
現代的網站幾乎都採取前後端分離的方式 , 而ajax就像是一個橋梁 , 把前端的需求或要處理的資料傳送到後端做處理 , 處理完成後在回傳給前端處理完的資料 , 前端再把資料顯示出來
範例如下 :
html (index.php)
<form id="demo"> 暱稱:<input type="text" id="nickname"> 性別: <select id="gender"> <option value="">請選擇</option> <option value="男">男</option> <option value="女">女</option> <option value="其他">其他</option> </select> <button type="button" id="submitExample">執行範例</button> </form> <div id="result"></div>
jQuery
// 等全部的DOM元素下載完後就會觸發,觸發時間較早 // 補充 : window.onload是等整個網站都下載完成才會跑,如果有100張圖 , 要等100張圖下載完才會執行 , 適合用在廣告的載入 $(document).ready(function() { $("#submitExample").click(function() { //ID 為 submitExample 的按鈕被點擊時 $.ajax({ type: "POST", //傳送方式 , 常用的傳送方式有 post 和 get url: "service.php", //傳送目的地 dataType: "json", //資料格式 , 傳送文字訊息都用json , 圖片的話用formdata data: { //傳送資料 nickname: $("#nickname").val(), //表單欄位 ID nickname gender: $("#gender").val() //表單欄位 ID gender }, success: function(data) { if (data.result == 'success') { //如果後端回傳 json 是成功的話 $("#demo")[0].reset(); //重設 ID 為 demo 的 form (表單) $("#result").html('<font color="#007500">您的暱稱為「<font color="#0000ff">' + data.nickname + '</font>」,性別為「<font color="#0000ff">' + data.gender + '</font>」!</font>'); } else { //否則讀取後端回傳 json 資料 errorMsg 顯示錯誤訊息 $("#demo")[0].reset(); //重設 ID 為 demo 的 form (表單) $("#result").html('<font color="#ff0000">' + data.errorMsg + '</font>'); } }, error: function(jqXHR) { $("#demo")[0].reset(); //重設 ID 為 demo 的 form (表單) $("#result").html('<font color="#ff0000">發生錯誤:' + jqXHR.status + '</font>'); } }) }) });
php (service.php)
<?php
header('Content-Type: application/json; charset=UTF-8'); //設定資料類型為 json,編碼 utf-8
if ($_SERVER['REQUEST_METHOD'] == "POST") { //如果是 POST 請求
$nickname = $_POST["nickname"]; //取得 nickname POST 值
$gender = $_POST["gender"]; //取得 gender POST 值
if ($nickname != null && $gender != null) { //如果 nickname 和 gender 都有填寫
//回傳 執行結果 , nickname 和 gender json 資料
echo json_encode(array(
'result' => 'success',
'nickname' => $nickname,
'gender' => $gender
));
} else {
//回傳 errorMsg json 資料
echo json_encode(array(
'errorMsg' => '資料未輸入完全!'
));
}
} else {
//回傳 errorMsg json 資料
echo json_encode(array(
'errorMsg' => '請求無效,只允許 POST 方式訪問!'
));
}
?>
引用網址 :
留言
張貼留言