1. 程式人生 > 實用技巧 >jQuery基礎教程

jQuery基礎教程

jQuery是什麼?

jQuery是一個JavaScript常用的工具函式庫。jQuery是一個輕量級的"寫的少,做的多"的JavaScript庫。

jQuery當中包含有以下一些常用功能:

  • HTML 元素選取
  • HTML 元素操作
  • CSS 操作
  • HTML 事件函式
  • JavaScript 特效和動畫
  • HTML DOM 遍歷和修改
  • AJAX
  • Utilities

下面的內容當中,我們會逐一的介紹jQuery的常用內容。

學習jQuery的心態

  • 以練為主,多看多練
  • 以js為基礎,更好的理解jQuery
  • jQuery只是js的一個函式庫,不能忘記js

jQuery的版本問題

目前jQuery有三個大版本,1.xx 、 2.xx 和 3.xx ,三個版本當中,1版本相容性最高,可以有效的相容ie瀏覽器,
6,7,8,9都能得到一個很好的相容,2版本則最低只能相容到ie9,而3版本則徹底放棄了ie9以下的瀏覽器。但是卻新增加
了很多的使用的方法,並且程式碼的安全性也增加很多,例如可以很好的防止xss攻擊等。

jQuery的使用

首先,我們可以根據需要下載一個指定版本的jquery檔案,當然也可以選擇使用cdn檔案。

js 官方網址: http://jquery.com/
常用CDN: 
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>  百度CDN中的jQuery
    <script src="http://upcdn.b0.upaiyun.com/libs/jquery/jquery-2.0.2.min.js"> </script> 右拍雲
    <script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> 新浪

jQuery 中的核心語法

在jQuery當中,jQuery是一個核心方法,用來查詢元素從而方便對元素的操作,可以簡寫為$

jQuery("#btn").click(function() {
        alert(123);
    });

// 上邊的程式碼也可以改為
$("#btn").click(function(){
    alert(123)
})

基礎語法

$(selector).action();
  • 美元符號定義 jQuery
  • 選擇符(selector)"查詢"和"查詢" HTML 元素
  • jQuery 的 action() 執行對元素的操作

文件就緒函式

在js當中,存在一個window.onlaod = function(){}

,函式當中的程式碼會在整個文件載入完畢之後執行,而在jq當中
也有類似的方法,如下:

$(document).ready(function(){
    // jq 程式碼
});

// 上述程式碼也可以簡寫為:
$(function(){
    // jq 程式碼
})

這是為了防止文件在完全載入(就緒)之前執行 jQuery 程式碼。

window.onload的區別
a: window.onload 必須等到頁面所有的元素都載入完成才能使用 ,而(function())domwindow.onload(function())則只是dom結構載入完成就會執行,例如頁面中存在許多的圖片,window.onload會等到頁面全部載入完成才能執行,圖片不載入完是不會執行的除非超過請求時間。而(function(){})在程式碼dom執行完成後就會執行,
而不會等待圖片載入完成。

b: window.onload 一個頁面只能有一個,而$(function(){})可以有多個,執行順序從上向下

jQuery 選擇器

在jq當中,我們可以通過選擇器任意的選取html元素,並且操作html元素。

jQuery 選擇器基於元素的 id、類、型別、屬性、屬性值等"查詢"(或選擇)HTML 元素。它基於已經存在的 CSS 選擇器,除此之外,它還有一些自定義的選擇器。

三個基礎選擇器如下:

$("p") 元素選擇器
$("#d1") id選擇器
$(".class") class選擇器

還有一個常用的css選擇器.css(),可以用來幫助我們更改css樣式。

$("#d1").css("background-color","red");

還有一些其他的選擇器:

$("*") 選取所有元素
$(this) 選取當前 HTML 元素
$("p.intro") 選取 class 為 intro 的 <p> 元素
$("p:first")    選取第一個 <p> 元素
$("ul li:first")    選取第一個 <ul> 元素的第一個 <li> 元素
$("ul li:first-child") 選取每個 <ul> 元素的第一個 <li> 元素
$("[href]") 選取帶有 href 屬性的元素
$("a[target='_blank']") 選取所有 target 屬性值等於 "_blank" 的 <a> 元素
$("a[target!='_blank']") 選取所有 target 屬性值不等於 "_blank" 的 <a> 元素
$(":button") 選取所有 type="button" 的 <input> 元素 和 <button> 元素
$("tr:even") 選取偶數位置的 <tr> 元素
$("tr:odd") 選取奇數位置的 <tr> 元素

常用選擇器可以訪問:https://www.w3cschool.cn/jquery/jquery-ref-selectors.html

jQuery事件

在jq當中,基本上所有的js事件都有一個對應的jq事件,下面是jq當中常用的事件。

滑鼠事件:

  • click
  • dblclick
  • mouseenter
  • mouseleave

鍵盤事件:

  • keypress
  • keydown
  • keyup

表單事件:

  • submit
  • change
  • focus
  • blur

文件/視窗事件:

  • load
  • resize
  • scroll
  • unload

鍵盤事件的差異:

  • keydown:在鍵盤上按下某鍵時發生,一直按著則會不斷觸發(opera瀏覽器除外),它返回的是鍵盤程式碼;
  • keypress:在鍵盤上按下一個按鍵,併產生一個字元時發生, 返回ASCII碼。注意: shift、alt、ctrl等鍵按下並不會產生字元,所以監聽無效,換句話說,只有按下能在螢幕上輸出字元的按鍵時keypress事件才會觸發。若一直按著某按鍵則會不斷觸發。
  • keyup:使用者鬆開某一個按鍵時觸發,與keydown相對,返回鍵盤程式碼.

全部事件方法可以訪問:https://www.w3cschool.cn/jquery/jquery-ref-events.html

jQuery 效果

顯示和隱藏

在 jQuery 中可以使用 hide() 和 show() 方法來隱藏和顯示 HTML 元素,以及使用 toggle() 方法能夠切換 hide() 和 show() 方法。

在hide()和show()方法中,我們可以讓元素隱藏和顯示。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #d1 {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <button id="btn1">隱藏</button>
    <button id="btn2">顯示</button>
    <div id="d1"></div>
</body>
<script src="dist/jquery-3.0.0.js"></script>
<script>
    $(()=>{
        $("#btn1").click(()=>{
            $("#d1").hide();
        }),
        $("#btn2").click(()=>{
            $("#d1").show();
        })
    })
</script>
</html>

我們也可以給顯示和隱藏加上時間,例如:

$(()=>{
        $("#btn1").click(()=>{
            $("#d1").hide(2000);
        }),
        $("#btn2").click(()=>{
            $("#d1").show(2000);
        })
    })

除了時間,我們還可以加上回調函式,例如:

$(()=>{
        $("#btn1").click(()=>{
            $("#d1").hide(2000,()=>{
                alert("隱藏完畢!");
            });
        }),
        $("#btn2").click(()=>{
            $("#d1").show(2000,()=>{
                alert("顯示完畢!");
            });
        })
    })

除了上述的兩個方法,還存在一個toggle()方法,可以對顯示和隱藏效果進行取反。

$("#btn3").click(()=>{
            $("#d1").toggle(1000,()=>{
                alert("取反操作執行完畢!");
            })
        });

淡入淡出

jq當中,提供了四個方法實現淡入淡出,如下:

  • fadeIn() 淡入隱藏元素
  • fadeOut() 淡出可見元素
  • fadeToggle() 淡入淡出效果切換
  • fadeTo() 漸變到給定透明度 引數: speed,opacity(0-1),callback

例如:

$(()=>{
        $("#btn1").click(()=>{
            $("#d1").fadeIn(300, function() {
                // "slow"、"fast" 或毫秒。
                alert("淡入完畢")
            });
            
        })
        

        $("#btn2").click(()=>{
            $("#d1").fadeOut(300, function() {
                // "slow"、"fast" 或毫秒。
                alert('淡出完畢')
            });
            
        })
        $("#btn3").click(()=>{
            $("#d1").fadeToggle(300, function() {
                // "slow"、"fast" 或毫秒。
                alert('取反完畢')
            });
            
        })
        $("#btn4").click(()=>{
            $("#d1").fadeTo(300,.4, function() {
                // "slow"、"fast" 或毫秒。
                alert('變化完畢')
            });
            
        })

    });

滑動效果

jQuery 滑動方法可使元素上下滑動。

  • slideDown()
  • slideUp()
  • slideToggle()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        * {
            margin:0;
            padding:0;
        }
        .main {
            width: 400px;
            border:2px solid lightblue;
            /*overflow: hidden;*/
            /*height: 50px;*/
        }
        h1 {
            font-size:25px;
            width: 100%;
            height: 50px;
            background-color: lightblue;
            line-height: 50px;
            text-align: center;
            color: white;
        }
        .info {
            height: 200px;
            background-color: lightblue;
            display: none;
        }
    </style>
</head>
<body>
    <div class="main">
        <h1 id="h1">hello,world</h1>
        <div class="info">
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, ipsa doloribus earum quasi qui dolorum maiores pariatur, quibusdam quidem, consequuntur a soluta deserunt fugit placeat nulla modi, maxime neque tempora.
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur soluta qui cum aliquid, perferendis tempore voluptas sapiente nostrum, aperiam voluptatem, eos repellendus iure dicta delectus voluptatibus architecto sed vitae maxime.
        </div>
        
    </div>
</body>
<script src="dist/jquery-3.0.0.js"></script>
<script>
    $(()=>{

        // $("h1").click(()=>{
        //  $(".info").slideDown(300, function() {
        //      alert("完畢");
        //  });
        // });

        // $("h1").click(()=>{
        //  $(".info").slideUp(300, function() {
        //      alert("完畢");
        //  });
        // });
        $("h1").click(()=>{
            $(".info").slideToggle(300, function() {
                alert("完畢");
            });
        });
    });
</script>
</html>

動畫

jq當中可以通過animate()來實現動畫效果,語法如下:

 $(selector).animate({params},speed,callback);

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #d1{
            width: 80px;
            height: 50px;
            font-size: 12px;
            border:2px solid lightblue;
        }
    </style>
</head>
<body>
    <div id="d1">
        hello,world
    </div>
</body>
<script src="dist/jquery-3.0.0.js"></script>
<script>
    $(()=>{
        $("#d1").click(()=>{
            $("#d1").animate({
                width:"200px",
                height:"150px"
            },1000,()=>{
                alert("變化完成")
            })
        });
    });
</script>
</html>

也可以再上一次的基礎上繼續執行動畫:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #d1{
            width: 80px;
            height: 50px;
            font-size: 12px;
            border:2px solid lightblue;
        }
    </style>
</head>
<body>
    <div id="d1">
        hello,world
    </div>
</body>
<script src="dist/jquery-3.0.0.js"></script>
<script>
    $(()=>{
        $("#d1").click(()=>{
            let a = $("#d1").animate({
                width:"200px",
                height:"150px"
            },1000,()=>{
                alert("變化完成")
            }).animate({
                fontSize:"30px"
            },1000)
        });

    });
</script>
</html>

animate()幾乎支援所有的css屬性,其中設定屬性以小駝峰的寫法,同時這個方法不支援顏色屬性,如果想要支援
顏色屬性,需要下載顏色外掛:https://plugins.jquery.com/color/

在設定值的時候也可以使用相對值:

$("button").click(function(){
  $("div").animate({
    left:'250px',
    height:'+=150px',
    width:'+=150px'
  });
}); 

停止動畫

我們可以通過stop()方法停止動畫。

語法如下:

 $(selector).stop(stopAll,goToEnd);

jQuery stop() 方法用於停止動畫或效果,在它們完成之前。

stop() 方法適用於所有 jQuery 效果函式,包括滑動、淡入淡出和自定義動畫。

可選的 stopAll 引數規定是否應該清除動畫佇列。預設是 false,即僅停止活動的動畫,允許任何排入佇列的動畫向後執行。

可選的 goToEnd 引數規定是否立即完成當前動畫。預設是 false。

因此,預設地,stop() 會清除在被選元素上指定的當前動畫。

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        * {
            margin:0;
            padding:0;
        }
        .main {
            width: 400px;
            border:2px solid lightblue;
        }
        h1 {
            font-size:25px;
            width: 100%;
            height: 50px;
            background-color: lightblue;
            line-height: 50px;
            text-align: center;
            color: white;
        }
        .info {
            height: 200px;
            background-color: lightblue;
            overflow: hidden;
            display: none;
        }
    </style>
</head>
<body>
    <button id="btn1">停止動畫</button>
    <div class="main">
        <h1 id="h1">hello,world</h1>
        <div class="info">
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, ipsa doloribus earum quasi qui dolorum maiores pariatur, quibusdam quidem, consequuntur a soluta deserunt fugit placeat nulla modi, maxime neque tempora.
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur soluta qui cum aliquid, perferendis tempore voluptas sapiente nostrum, aperiam voluptatem, eos repellendus iure dicta delectus voluptatibus architecto sed vitae maxime.
        </div>
        
    </div>
</body>
<script src="dist/jquery-3.0.0.js"></script>
<script>
    $(()=>{

        $("h1").click(()=>{
            $(".info").slideToggle(3000, function() {
                alert("完畢");
            });
        });

        $("#btn1").click(()=>{
            $(".info").stop();
        });
    });
</script>
</html>

獲取元素內容

可以通過下面的三個方法獲取元素的內容。

  • text() - 設定或返回所選元素的文字內容
  • html() - 設定或返回所選元素的內容(包括 HTML 標記)
  • val() - 設定或返回表單欄位的值
  • attr() - 用於獲取屬性值。
$("button").click(function(){
  alert($("#w3s").attr("href"));
});

設定屬性值

上面說的三個方法同樣可以用於設定屬性值:

  • text() - 設定或返回所選元素的文字內容
  • html() - 設定或返回所選元素的內容(包括 HTML 標記)
  • val() - 設定或返回表單欄位的值
$("#btn1").click(function(){ 
  $("#test1").text("Hello world!"); 
}); 
$("#btn2").click(function(){ 
  $("#test2").html("<b>Hello world!</b>"); 
}); 
$("#btn3").click(function(){ 
  $("#test3").val("Dolly Duck"); 
});

attr()方法同樣可以設定屬性值,並且也可以同時設定多個屬性值。

$("button").click(function(){ 
  $("#w3s").attr("href","//www.baidu.com/"); 
});
$("button").click(function(){ 
  $("#w3s").attr({ 
    "href" : "//www.baidu.com", 
    "title" : "jQuery 教程" 
  }); 
});

新增元素

jq當中,可以通過下面的方法新增元素:

  • append() - 在被選元素內部的結尾插入指定內容
  • prepend() - 在被選元素內部的開頭插入指定內容
  • after() - 在被選元素之後插入內容
  • before() - 在被選元素之前插入內容
$("p").append("Some appended text.");

也可以通過上述四個方法新增多個元素:

function appendText() 
{ 
var txt1="<p>Text.</p>";               // 使用 HTML 標籤建立文字  
var txt2=$("<p></p>").text("Text.");   // 使用 jQuery 建立文字 
var txt3=document.createElement("p");   
txt3.innerHTML="文字。";               // 使用 DOM 建立文字 text with DOM 
$("p").append(txt1,txt2,txt3);         // 追加新元素 
}

刪除元素

jq當中刪除元素的方法如下:

  • remove() - 刪除被選元素(及其子元素)
  • empty() - 從被選元素中刪除子元素

刪除元素過濾

jQuery remove() 方法也可接受一個引數,允許您對被刪元素進行過濾。

該引數可以是任何 jQuery 選擇器的語法。

下面的例子刪除 class="italic" 的所有

元素:

$("p").remove(".italic");

CSS類的操作

jQuery 擁有若干進行 CSS 操作的方法。如下:

  • addClass() - 向被選元素新增一個或多個類
  • removeClass() - 從被選元素刪除一個或多個類
  • toggleClass() - 對被選元素進行新增/刪除類的切換操作
  • css() - 設定或返回樣式屬性
// 新增類
$("button").click(function(){
  $("h1,h2,p").addClass("blue");
  $("div").addClass("important");
});

// 新增多個類
$("button").click(function(){
  $("#div1").addClass("important blue");
});

通過css()方法,可以設定或者查詢元素的屬性樣式。

例如:

// 返回首個匹配元素的 background-color 值:
$("p").css("background-color");

//為所有匹配元素設定 background-color 值:
$("p").css("background-color","yellow");

//所有匹配元素設定 background-color 和 font-size:
$("p").css({"background-color":"yellow","font-size":"200%"});

類似的還有如下的幾個方法:

  • height() 設定或返回匹配元素的高度。
  • offset() 返回第一個匹配元素相對於文件的位置。
  • offsetParent() 返回最近的定位祖先元素。
  • position() 返回第一個匹配元素相對於父元素的位置。
  • scrollLeft() 設定或返回匹配元素相對滾動條左側的偏移。
  • scrollTop() 設定或返回匹配元素相對滾動條頂部的偏移。
  • width() 設定或返回匹配元素的寬度。

元素尺寸查詢

通過下列方法我們可以查詢元素的尺寸:

  • width()
  • height()
  • innerWidth()
  • innerHeight()
  • outerWidth()
  • outerHeight()

根據元素關係獲取元素

獲取祖先元素

下面的方法可以獲取祖先元素:

  • parent() 方法返回被選元素的直接父元素。
  • parents() 返回被選元素的所有祖先元素,它一路向上直到文件的根元素 ()
  • parentsUntil() 方法返回介於兩個給定元素之間的所有祖先元素。
$(document).ready(function(){
  $("span").parentsUntil("div");
});

獲取後代元素

下面的方法可以獲取後代元素

  • children() 方法返回被選元素的所有直接子元素。
  • find() 方法返回被選元素的後代元素,一路向下直到最後一個後代。

例如:

//  返回屬於 <div> 後代的所有 <span> 元素:
$(document).ready(function(){
  $("div").find("span");
});

// 返回 <div> 的所有後代
$(document).ready(function(){
  $("div").find("*");
});

獲取兄弟元素

下面的方法可以獲得兄弟元素 :

  • siblings() 方法返回被選元素的所有同胞元素。
  • next() 方法返回被選元素的下一個同胞元素。
  • nextAll() 方法返回被選元素的所有跟隨的同胞元素。
  • nextUntil() 方法返回介於兩個給定引數之間的所有跟隨的同胞元素。
  • prev()
  • prevAll()
  • prevUntil()

過濾

所謂的過濾,就是查詢指定的元素,常用方法有以下的幾種:

  • first() 返回被選元素的首個元素
  • last() 返回被選元素的最後一個元素
  • eq() 返回被選元素中帶有指定索引號的元素
  • filter() 方法允許您規定一個標準。不匹配這個標準的元素會被從集合中刪除,匹配的元素會被返回。
  • not() 方法返回不匹配標準的所有元素