1. 程式人生 > 其它 >JQuery(基本語法、選擇器、DOM)

JQuery(基本語法、選擇器、DOM)

技術標籤:Webjsjqueryjavascript

1. JQuery介紹

  • JQuery是一個JavaScript庫
  • 所謂的庫,就是一個js檔案,裡面封裝了很多預定的函式,比如獲取元素,執行隱藏、移動等,目的就是在使用的時候直接呼叫,不需要重新定義,這樣就可以極大的簡化了JavaScript的程式碼
  • JQuery的官方網站:https://www.jquery.com

2. 入門使用

  • 操作步驟
    • 編寫HTML文件
    • 引入JQuery檔案
    • 使用JQuery獲取元素
    • 使用瀏覽器測試
  • JQuery的核心語法
    • $();
  • 程式碼示例
    <!DOCTYPE html>
    <html lang="
    en"
    >
    <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>快速入門</title> </head> <body> <div id="div">我是div</div> </body> <!--引入 jQuery 檔案-->
    <script src="js/jquery-3.3.1.min.js"></script> <script> // JS方式,通過id屬性值來獲取div元素 let jsDiv = document.getElementById("div"); //alert(jsDiv); //alert(jsDiv.innerHTML); // jQuery方式,通過id屬性值來獲取div元素 let jqDiv = $("#div"); alert(jqDiv); alert
    (jqDiv.html());
    </script> </html>

3. 基本語法

3.1 物件轉換

  • JQuery本質上雖然也是JS,但如果想使用JQuery的屬性和方法,那麼必須保證物件是JQuery物件,而不是JS方式獲得的DOM物件,二者的API方法不能混合使用,若想使用對方的API,需要進行物件的轉換
  • JS的DOM物件轉換成JQuery物件
    • $(JS的DOM物件);
  • JQuery物件轉換成JS物件
    • JQuery物件[索引];
    • JQuery物件.get(索引);
  • 程式碼示例
    // JS方式,通過id屬性值獲取div元素
    let jsDiv = document.getElementById("div");
    alert(jsDiv.innerHTML);
    //alert(jsDiv.html());  JS物件無法使用jQuery裡面的功能
    
    // 將 JS 物件轉換為jQuery物件
    let jq = $(jsDiv);
    alert(jq.html());
    
    // jQuery方式,通過id屬性值獲取div元素
    let jqDiv = $("#div");
    alert(jqDiv.html());
    // alert(jqDiv.innerHTML);   jQuery物件無法使用JS裡面的功能
    
    // 將 jQuery物件轉換為JS物件
    let js = jqDiv[0];
    alert(js.innerHTML);
    

3.2 事件的使用

  • 在JQuery中將事件封裝成了對應的方法,去掉了JS中的.on語法
  • JS的做法
    • js物件.onclick = function(){};
  • JQuery的做法
    • JQuery物件.click(function(){});
  • 程式碼示例
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>事件的使用</title>
    </head>
    <body>
        <input type="button" id="btn" value="點我">
        <br>
        <input type="text" id="input">
    </body>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        //單擊事件
        $("#btn").click(function(){
            alert("點我幹嘛?");
        });
    
        //獲取焦點事件
        // $("#input").focus(function(){
        //     alert("你要輸入資料啦...");
        // });
    
        //失去焦點事件
        $("#input").blur(function(){
            alert("你輸入完成啦...");
        });
    </script>
    </html>
    

注意

  • this永遠表示的js物件

3.3 事件的繫結和解綁

  • 繫結事件
    • JQuery物件.on(事件名稱,執行的功能);
  • 解綁事件
    • JQuery物件.off(事件名稱);

注意

  • 如果不指定解綁的事件名稱,那所有的事件都會解綁

3.4 事件的切換

  • 概念
    • 需要給同一個物件繫結多個事件,而且多個事件還有先後順序關係
  • 方式一:單獨定義
    • 語法
      $(元素).事件方法名1(要執行的功能);
      $(元素).事件方法名2(要執行的功能);
      ...
      
    • 程式碼示例
      $("#div").mouseover(function(){
          //背景色:紅色
          //$("#div").css("background","red");
          $(this).css("background","red");
      });
      $("#div").mouseout(function(){
          //背景色:藍色
          //$("#div").css("background","blue");
          $(this).css("background","blue");
      });
      
  • 方式二:鏈式定義
    • 語法
      $(元素).
      事件方法名1(要執行的功能).
      事件方法名2(要執行的功能).
      ...;
      
    • 程式碼示例
      $("#div").mouseover(function(){
         $(this).css("background","red");
      }).mouseout(function(){
         $(this).css("background","blue");
      });
      

3.5 遍歷

  • 方式一:傳統方式
    • 語法
      for(let i = 0;i < 容器物件長度;i ++){
          執行功能;
      }
      
    • 程式碼示例
      $("#btn").click(function(){
          let lis = $("li");
          for(let i = 0 ; i < lis.length; i++) {
              alert(i + ":" + lis[i].innerHTML);
          }
      });
      
  • 方式二:物件.each()方法
    • 語法
      容器物件.each(function(index,ele){
          執行功能;
      });
      
    • 程式碼示例
      $("#btn").click(function(){
          let lis = $("li");
          lis.each(function(index,ele){
              alert(index + ":" + ele.innerHTML);
          });
      });
      
  • 方式三:$.each()方法
    • 語法
      $.each(容器物件,function(index,ele){
             執行功能;
      });
      
    • 程式碼示例
      $("#btn").click(function(){
          let lis = $("li");
          $.each(lis,function(index,ele){
              alert(index + ":" + ele.innerHTML);
          });
      });
      
  • 方式四:for of 語句
    • 語法
      for(ele of 容器物件){
          執行功能;
      }
      
    • 程式碼示例
      $("#btn").click(function(){
          let lis = $("li");
          for(ele of lis){
              alert(ele.innerHTML);
          }
      });
      

4. 選擇器

  • 概念
    • 類似與CSS的選擇器,可以幫助我們獲取元素
  • 基本語法
    • $();
  • 基本選擇器
    選擇器語法作用
    元素選擇器$(“元素的名稱”);根據元素名稱獲取元素物件們
    id選擇器$("#id的屬性值");根據id屬性值獲取元素物件
    類選擇器$(".class的屬性值");根據class屬性值獲取元素物件們

    注意

    • 如果拿到的是JQuery陣列物件,想要獲得其中的某一個,使用索引得到的將會是Js物件,再呼叫函式時需要注意物件型別,是JQuery物件還是JS物件
  • 層級選擇器
    選擇器語法作用
    後代選擇器$(“A B”);A下的所有B(包括B的子級)
    子選擇器$(“A > B”);A下的所有B(不包括B的子級)
    兄弟選擇器$(“A + B”);A相鄰的下一個B
    兄弟選擇器$(“A ~ B”);A相鄰的所有B
  • 屬性選擇器
    選擇器語法作用
    屬性名選擇器$(“A[屬性名]”);根據指定屬性名獲取元素物件們
    屬性值選擇器$(“A[屬性名=屬性值]”);根據指定屬性名和屬性值獲取元素物件們
  • 過濾器選擇器
    選擇器語法作用
    首元素選擇器$(“A:first”);獲得選擇的元素中的第一個元素
    尾元素選擇器$(“A:last”);獲得選擇的元素中的最後一個元素
    非元素選擇器$(“A:not(B)”);不包括指定內容的元素
    偶數選擇器$(“A:even”);偶數,從0開始計數
    奇數選擇器$(“A:odd”);奇數,從0開始計數
    等於索引選擇器$(“A:eq(index)”);指定索引元素
    大於索引選擇器$(“A:gt(index)”);大於指定索引元素
    小於索引選擇器$(“A:lt(index)”);小於指定索引元素
  • 表單屬性選擇器
    選擇器語法作用
    可用元素選擇器$(“A:enabled”);獲得可用元素
    不可用元素選擇器$(“A:disabled”);獲得不可用元素
    單選/複選框被選中的元素$(“A:checked”);獲得單選/複選框選中的元素
    下拉框被選中的元素$(“A:selected”);獲得下拉框選中的元素

5. DOM

5.1 操作文字

  • 常用方法
    方法作用
    html()獲取標籤的文字
    html(value)設定標籤的文字內容,解析標籤
  • 程式碼示例
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>操作文字</title>
    </head>
    <body>
        <div id="div">我是div</div>
        <input type="button" id="btn1" value="獲取div的文字">
        <input type="button" id="btn2" value="設定div的文字">
    </body>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
         //1. html()   獲取標籤的文字內容
         $("#btn1").click(function(){
             //獲取div標籤的文字內容
             let value = $("#div").html();
             alert(value);
         });
    
         //2. html(value)   設定標籤的文字內容,解析標籤
         $("#btn2").click(function(){
             //設定div標籤的文字內容
             //$("#div").html("我真的是div");
             $("#div").html("<b>我真的是div</b>");
         });
    </script>
    </html>
    

5.2 操作物件

  • 常用方法
    方法作用
    $(“元素”)建立指定元素
    append(element)新增成最後一個子元素,由新增者物件呼叫
    appendTo(element)新增成最後一個子元素,由被新增者物件呼叫
    prepend(element)新增成第一個子元素,由新增者物件呼叫
    prependTo(element)新增成第一個子元素,由被新增者物件呼叫
    before(element)新增到當前元素的前面,兩者之間是兄弟關係,由新增者物件呼叫
    after(element)新增到當前元素的後面,兩者之間是兄弟關係,由新增者物件呼叫
    remove()刪除指定元素(自己移除自己)
    empty()清空指定元素的所有子元素
  • 程式碼示例
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>操作物件</title>
    </head>
    <body>
        <div id="div"></div>
        <input type="button" id="btn1" value="新增一個span到div"> <br><br><br>
    
        <input type="button" id="btn2" value="將加油新增到城市列表最下方"> &nbsp;&nbsp;&nbsp;
        <input type="button" id="btn3" value="將加油新增到城市列表最上方"> &nbsp;&nbsp;&nbsp;
        <input type="button" id="btn4" value="將雄起新增到上海下方"> &nbsp;&nbsp;&nbsp;
        <input type="button" id="btn5" value="將雄起新增到上海上方"> &nbsp;&nbsp;&nbsp;
        <ul id="city">
            <li id="bj">北京</li>
            <li id="sh">上海</li>
            <li id="gz">廣州</li>
            <li id="sz">深圳</li>
        </ul>
        <ul id="desc">
            <li id="jy">加油</li>
            <li id="xq">雄起</li>
        </ul>  <br><br><br>
        <input type="button" id="btn6" value="將雄起刪除"> &nbsp;&nbsp;&nbsp;
        <input type="button" id="btn7" value="將描述列表全部刪除"> &nbsp;&nbsp;&nbsp;
    </body>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        // 按鈕一:新增一個span到div
        $("#btn1").click(function(){
            let span = $("<span>span</span>");
            $("#div").append(span);
        });
        
        //按鈕二:將加油新增到城市列表最下方
        $("#btn2").click(function(){
            //$("#city").append($("#jy"));
            $("#jy").appendTo($("#city"));
        });
    
        //按鈕三:將加油新增到城市列表最上方
        $("#btn3").click(function(){
            //$("#city").prepend($("#jy"));
            $("#jy").prependTo($("#city"));
        });
        
        //按鈕四:將雄起新增到上海下方
        $("#btn4").click(function(){
            $("#sh").after($("#xq"));
        });
        
        //按鈕五:將雄起新增到上海上方
        $("#btn5").click(function(){
            $("#sh").before($("#xq"));
        });
    
        //按鈕六:將雄起刪除
        $("#btn6").click(function(){
            $("#xq").remove();
        });
        
        //按鈕七:將描述列表全部刪除
        $("#btn7").click(function(){
            $("#desc").empty();
        });
        
    </script>
    </html>
    

5.3 操作樣式

  • 常用方法
    方法作用
    css(name)根據樣式名稱獲取css樣式
    css(name,value)設定css樣式
    addClass(value)給指定的物件新增樣式類名
    removeClass(value)給指定的物件刪除樣式類名
    toggleClass(value)如果沒有樣式類名,則新增,如果有,則刪除
  • 程式碼實現
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>操作樣式</title>
        <style>
            .cls1{
                background: pink;
                height: 30px;
            }
        </style>
    </head>
    <body>
        <div style="border: 1px solid red;" id="div">我是div</div>
        <input type="button" id="btn1" value="獲取div的樣式"> &nbsp;&nbsp;
        <input type="button" id="btn2" value="設定div的背景色為藍色">&nbsp;&nbsp;
        <br><br><br>
        <input type="button" id="btn3" value="給div設定cls1樣式"> &nbsp;&nbsp;
        <input type="button" id="btn4" value="給div刪除cls1樣式"> &nbsp;&nbsp;
        <input type="button" id="btn5" value="給div設定或刪除cls1樣式"> &nbsp;&nbsp;
    </body>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        // 1.css(name)   獲取css樣式
        $("#btn1").click(function(){
            alert($("#div").css("border"));
        });
    
        // 2.css(name,value)   設定CSS樣式
        $("#btn2").click(function(){
            $("#div").css("background","blue");
        });
    
        // 3.addClass(value)   給指定的物件新增樣式類名
        $("#btn3").click(function(){
            $("#div").addClass("cls1");
        });
    
        // 4.removeClass(value)  給指定的物件刪除樣式類名
        $("#btn4").click(function(){
            $("#div").removeClass("cls1");
        });
    
        // 5.toggleClass(value)  如果沒有樣式類名,則新增。如果有,則刪除
        $("#btn5").click(function(){
            $("#div").toggleClass("cls1");
        });
        
    </script>
    </html>
    

5.4 操作屬性

  • 常用方法
    方法作用
    attr(name,[value])獲得/設定屬性的值
    prop(name,[value])獲得/設定屬性的值(checked,selected)
  • 程式碼實現
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>操作屬性</title>
    </head>
    <body>
        <input type="text" id="username"> 
        <br>
        <input type="button" id="btn1" value="獲取輸入框的id屬性">  &nbsp;&nbsp;
        <input type="button" id="btn2" value="給輸入框設定value屬性">
        <br><br>
    
        <input type="radio" id="gender1" name="gender"><input type="radio" id="gender2" name="gender"><br>
        <input type="button" id="btn3" value="選中女">
        <br><br>
        
        <select>
            <option>---請選擇---</option>
            <option id="bk">本科</option>
            <option id="zk">專科</option>
        </select>
        <br>
        <input type="button" id="btn4" value="選中本科">
    </body>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        // 1.attr(name,[value])   獲得/設定屬性的值
        //按鈕一:獲取輸入框的id屬性
        $("#btn1").click(function(){
            alert($("#username").attr("id"));
        });
        
        //按鈕二:給輸入框設定value屬性
        $("#btn2").click(function(){
            $("#username").attr("value","hello...");
        });
        
        // 2.prop(name,[value])   獲得/設定屬性的值(checked,selected)
        //按鈕三:選中女
        $("#btn3").click(function(){
            $("#gender2").prop("checked",true);
        });
    
        //按鈕四:選中本科
        $("#btn4").click(function(){
            $("#bk").prop("selected",true);
        });
    </script>
    </html>
    

6. 複選框案例

6.1 案例效果

在這裡插入圖片描述

6.2 功能分析

  • 全選
    • 為全選按鈕繫結單擊事件。
    • 獲取所有的商品項複選框元素,為其新增 checked 屬性,屬性值為 true。
  • 全不選
    • 為全不選按鈕繫結單擊事件。
    • 獲取所有的商品項複選框元素,為其新增 checked 屬性,屬性值為 false。
  • 反選
    • 為反選按鈕繫結單擊事件
    • 獲取所有的商品項複選框元素,為其新增 checked 屬性,屬性值是目前相反的狀態。

6.3 程式碼實現

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>複選框</title>
</head>
<body>
    <table id="tab1" border="1" width="800" align="center">
        <tr>
            <th style="text-align: left">
                <input style="background:lightgreen" id="selectAll" type="button" value="全選">
                <input style="background:lightgreen" id="selectNone" type="button" value="全不選">
                <input style="background:lightgreen" id="reverse" type="button" value="反選">
            </th>
    
            <th>分類ID</th>
            <th>分類名稱</th>
            <th>分類描述</th>
            <th>操作</th>
        </tr>
        <tr>
            <td><input type="checkbox" class="item"></td>
            <td>1</td>
            <td>手機數碼</td>
            <td>手機數碼類商品</td>
            <td><a href="">修改</a>|<a href="">刪除</a></td>
        </tr>
        <tr>
            <td><input type="checkbox" class="item"></td>
            <td>2</td>
            <td>電腦辦公</td>
            <td>電腦辦公類商品</td>
            <td><a href="">修改</a>|<a href="">刪除</a></td>
        </tr>
        <tr>
            <td><input type="checkbox" class="item"></td>
            <td>3</td>
            <td>鞋靴箱包</td>
            <td>鞋靴箱包類商品</td>
            <td><a href="">修改</a>|<a href="">刪除</a></td>
        </tr>
        <tr>
            <td><input type="checkbox" class="item"></td>
            <td>4</td>
            <td>家居飾品</td>
            <td>家居飾品類商品</td>
            <td><a href="">修改</a>|<a href="">刪除</a></td>
        </tr>
    </table>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    //全選
    //1.為全選按鈕新增單擊事件
    $("#selectAll").click(function(){
        //2.獲取所有的商品複選框元素,為其新增checked屬性,屬性值true
        $(".item").prop("checked",true);
    });

    //全不選
    //1.為全不選按鈕新增單擊事件
    $("#selectNone").click(function(){
        //2.獲取所有的商品複選框元素,為其新增checked屬性,屬性值false
        $(".item").prop("checked",false);
    });

    //反選
    //1.為反選按鈕新增單擊事件
    $("#reverse").click(function(){
        //2.獲取所有的商品複選框元素,為其新增checked屬性,屬性值是目前相反的狀態
        let items = $(".item");
        items.each(function(){
            $(this).prop("checked",!$(this).prop("checked"));
        });
    });
</script>
</html>