Stories

Detail Return Return

JavaScript的常用庫 —— jQuery - Stories Detail

jQuery

用來更加方便地去控制前端的HTML標籤和CSS屬性。

使用方式:

1. 直接在<head>元素中添加:

<script src="https://cdn.acwing.com/static/jquery/js/jquery-3.3.1.min.js"></script>

2. 按jQuery官網提示下載。

https://jquery.com/download/


選擇器:

$(selector)selector類似於CSS選擇器。

$('div');
$('.big-div');
$('div > p')

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('.mydiv');
    console.log($div);
}

export {
    main
}

test.html中的內容為:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
    <link rel="stylesheet" href="/test/test.css">
    <script src="https://cdn.acwing.com/static/jquery/js/jquery-3.3.1.min.js"></script>  // jQuery
</head>

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div class="mydiv"></div>

</body>
</html>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

事件:

$(selector).on(event, func)綁定事件。

$('div').on('click', function (e) {
    console.log("click div");
})

簡寫:

$div.click(function() {
        console.log("click div");
    })

$(selector).off(event, func)刪除事件。

$('div').on('click', function (e) {
    console.log("click div");

    $('div').off('click');   // 刪除單擊事件
});

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');
    
    $div.on("click", function() {   // 綁定事件
        console.log("這是click div");

        //$div.off("click");  // 刪除(解綁)事件

    })
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

 

當存在多個相同類型的事件觸發函數時,可以通過click.name來區分。

$('div').on('click.first', function (e) {
    console.log("click div");

    $('div').off('click.first');
});

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');
    
    $div.on("click.name1", function() {   // 綁定事件
        console.log("這是click div 1");
        $div.off("click.name2");  // 解綁click.name2事件
    })

    $div.on("click.name2", function() {   // 綁定事件
        console.log("這是click div 2");
    })
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

 

在事件觸發的函數中的return false等價於同時執行以下兩個操作:

  • e.stopPropagation():阻止事件向上傳遞

  • e.preventDefault():阻止事件的默認行為

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');
    
    $div.on("click", function(e) {   // 給<div>綁定點擊事件
        console.log("這是click div 1");
    });

    $('a').on("click", function(e) {  // 給<a>綁定點擊事件
        console.log("click a");

        e.stopPropagation();  // 阻止向上傳遞,a事件觸發div事件不觸發
        e.preventDefault();  // 阻止當前點擊事件的操作,a事件不觸發div事件觸發

        //return false;  // 等同於e.stopPropagation(); e.preventDefault();  a事件不觸發div事件也不觸發

    })
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div>
        <a href="https://www.baidu.com" target="_blank">百度</a>
    </div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

元素的隱藏、展現:

  • $A.hide():隱藏,可以添加參數,表示消失時間

  • $A.show():展現,可以添加參數,表示出現時間

  • $A.fadeOut():慢慢消失,可以添加參數,表示消失時間

  • $A.fadeIn():慢慢出現,可以添加參數,表示出現時間

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');
    let $btn_hide = $('#hide-btn');
    let $btn_show = $('#show-btn');

    $btn_hide.click(function() {
        $div.hide(3000);  // 花費3000毫秒(= 3秒)隱藏
        //$div.fadeOut(3000);  // 淡出
    });

    $btn_show.click(function() {
        $div.show(1000);  // 花費1秒展現
        //$div.fadeIn(1000);  // 淡入
    });
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div></div>

    <button id="hide-btn">隱藏</button>
    <button id="show-btn">展現</button>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

元素的添加、刪除:

  • $('<div class="mydiv"><span>Hello World</span></div>'):構造一個jQuery對象

  • $A.append($B):將$B添加到$A的末尾

  • $A.prepend($B):將$B添加到$A的開頭

  • $A.remove():刪除元素$A

  • $A.empty():清空元素$A的所有兒子

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');

    let $a = $(
        `<a id="" style="" href="https://www.baidu.com">
            百度
            <span>!!!</span>
        </a>`);

    $div.click(function() {  // 單擊
        $div.append($a);  // 將$a添加到$div
    });

    $div.dblclick(function() {  // 雙擊
        $a.remove();  // 刪除元素$a
        // $dic.empty():清空元素$div裏的所有兒子
    });
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

對類的操作:

  • $A.addClass(class_name):添加某個類

  • $A.removeClass(class_name):刪除某個類

  • $A.hasClass(class_name):判斷某個類是否存在

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');

    $div.click(function() {  // 單擊
        $div.addClass('my-div');  // 添加my-div類
    });

    $div.dblclick(function() {  // 雙擊
        $div.removeClass('my-div');  // 刪除my-div類
    });
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

.my-div {
    background-color: orange;
}

對CSS的操作:

  • $("div").css("background-color"):獲取某個CSS的屬性

  • $("div").css("background-color","yellow"):設置某個CSS的屬性

  • 同時設置多個CSS的屬性:

$('div').css({
    width: "200px",
    height: "200px",
    "background-color": "orange",
});

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');

    $div.click(function() {  // 單擊
        console.log($div.css('background-color'));  // 獲取div的CSS屬性

        $div.css('background-color', 'orange');  // 將div的background-color屬性變為orange

        $div.css({   // 同時改變div多個CSS的屬性
            width: "200px",
            height: "200px",
            "background-color": "orange",
        });
    });
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

對標籤屬性的操作:

  • $('div').attr('id'):獲取屬性

  • $('div').attr('id', 'ID'):設置屬性

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');

    $div.click(function() {  // 單擊
        console.log($div.attr('wzy'));  // 返回18

        $div.attr('id', 'ID');  // 把div的id屬性改成ID的屬性
    });
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div wzy="18"></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

#ID {
    background-color: orange;
}

對HTML內容、文本的操作:

不需要背每個標籤該用哪種,用到的時候Google或者百度即可。

  • $A.html():獲取、修改HTML內容(標籤內容)

  • $A.text():獲取、修改文本信息

  • $A.val():獲取、修改文本的值

 
例如:
test.js中的內容為:

let main = function() {
    let $div = $('div');

    $div.click(function() {  // 單擊
        console.log($div.text());  // 獲取div的文本內容,返回 哈哈哈
        //$div.text("hello");  // 修改div的文本內容為hello

        console.log($div.html());  // 獲取標籤內容,返回<span>哈哈哈</span>
    });
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div wzy="18"><span>哈哈哈</span></div>

</body>

test.css中的內容為:

div {
    width: 300px;
    height: 300px;
    background-color: pink;
}

查找:

  • $(selector).parent(filter):查找父元素

  • $(selector).parents(filter):查找所有祖先元素

  • $(selector).children(filter):在所有子元素中查找

  • $(selector).find(filter):在所有後代元素中查找

 
例如:
test.js中的內容為:

let main = function() {
    let $div3 = $('.div-3');

    console.log($div3.parents('.div-1'));
}

export {
    main
}

test.html中的內容為:

<body>
    <script type="module">
        import {main} from "/test/test.js";

        main();
    </script>

    <div class="div-1">
        <div class="div-2">
            <div class="div-3"></div>
        </div>
    </div>
</body>

ajax

用來跟後端通信。Ajax就是在不刷新頁面的情況下,對頁面的某部分進行更新,只從服務器端獲取某些數據,一般是獲取json數據。

所以Ajax最大的優點就是,發送請求的時候不會影響用户的操作,相當於兩條平行線一樣,“你忙你的,我忙我的”,不需要去等待頁面的跳轉而浪費時間。


  • GET方法:

從服務器獲取內容。

$.ajax({
    url: url,  // 後端的鏈接
    type: "GET", 
    data: {   // 往後端傳的參數
    },
    dataType: "json",
    success: function (resp) {  // 當後端成功返回內容後,從resp裏解析出來內容

    },
});
  • POST方法:

把內容提交給服務器。

$.ajax({
    url: url,
    type: "POST", 
    data: {
    },
    dataType: "json",
    success: function (resp) {

    },
});

Add a new Comments

Some HTML is okay.