什麼是 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 方式訪問!'
    ));
}
?>


引用網址 : 

https://jquery.com/

https://www.fooish.com/jquery/attributes-and-css.html

https://blog.reh.tw/archives/662

留言

這個網誌中的熱門文章

網頁入門教材目錄

什麼是HTML?

網頁是怎麼運作的呢?