一文了解jquery

簡述

本文主要介紹jquery的重要語法功能,如選擇器,dom操作,事件等處理操作

什麼jquery?

jquery由美国人John Resig(约翰·莱西格)于2006年创建 ,是目前最流行的JavaScript程序库。以輕量,代碼簡潔,兼容性好(即使是ie5也能兼容)而著稱。

jquery的優勢

  1. 引入簡單,輕量化,壓縮版僅有100kb

  1. 出色的Dom封裝能力

  1. 瀏覽器兼容性好

  1. 選擇器功能器強大

jquery語法介紹

基本的語法結構

//此處引入jquery
<script src="js/jquery-3.4.1.min.js"></script>
<script>
// $ 代表了jquery 
     $(selector).action();
</script>

js對象和jquery對象的互相轉換

jquery的對象和方法與JavaScript對象是不同的,不能混用,但允許互相轉換,轉換語法如下

var jsDom = document.getElementById("myid")
var jqDom = $("p")
//js對象轉化為jquery對象
jqDom = $(jsDom)
alert(jqDom.html())
//jquery對象轉化為js對象
jsDom = jqDom.get(0)

jquery選擇器

jquery強大在於其強大的選擇器功能,藉助jquery的選擇器,可以非常方便地實現dom 的操作和事件相應。jquery的選擇器按照使用功能分為三類:基本選擇器,層次選擇器,屬性選擇器。

基本選擇器

基本選擇器包括標簽選擇器、類選擇器、ID選擇器、並集選擇器、交集選擇器和全局選擇器。

<body>
    <p >小秋</p>
    <p class="jy">小月</p>
    <p  id="wan">小夜</p>
    <h3 class="jy">小米</h3>
    <script src="jquery.js"></script>
    <script>
     $("p").css("color","red") //標籤選擇器
     $(".jy").css("color","blue") //類選擇器
     $("#wan").css("color","black") //id選擇器
     $("#wan,.jy").css("color","yellow") //幷集選擇器
     $("h3.jy").css("color","Orange") //交集選擇器
    </script>
    
</body>

層次選擇器

使用層次可以通過父子層級,來操作dom

<body>
    <div id="x">
        <p>p1</p>
        <div>
            <p>p2</p>
        </div>
    </div>
    <h3>222</h3>
    <h3>333</h3>
    <script src="jquery.js"></script>
    <script>
       $("#x p").css("color","red") //忽略層級
       $("#x>p").css("color","yellow")//子級
       $("#x~h3").css("color","gray")//同輩元素選擇器
       $("#x+h3").css("color","blue")//相鄰元素選擇器
    </script>
</body>

屬性選擇器

<style>
div{
width: 100px;
height: 100px;
background-color: #000;
}
.a{
background: palevioletred;
border-radius: 50%;
}
.b{
border:5px dashed darkcyan;
opacity: 0.6;
}
.cn{
background: #000;
color:#FFF;
font-family: 字魂49号-逍遥行书;
}
</style>
<body>
<button id="btn1">试试</button>
<button id="btn2">取消透明度</button>
<button id="btn3">样式切换</button>
<hr>
<div></div>
<h1>中华人民共和国,万岁!</h1>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
$("#btn1").click(function(){
// $("div").addClass("a");
$("div").addClass("a b");
});
$("#btn2").click(function(){
$("div").removeClass("b");
});
$("#btn3").click(function(){
$("h1").toggleClass("cn");
});
</script>
</body>

事件

事件處理也是jquery的強項,下面介紹jquery常用的事件

鼠標事件

jquery的鼠標事件分為三類點擊,觸摸,離開三類事件

    <body>
        <img src="../img/a1.png" width="300">
        <img src="../img/a1.png" width="300">
        <img src="../img/a1.png" width="300">
       
        <script>
        $("img").click( function(){
        //点击一下,换照片
        $(this).attr( "src","../img/a2.png" ); //this就是事件触发的源头
        } );
        $("img").mouseover( function(){ //移动到元素上
        $(this).css( "border","2px solid red" );
        } );
        $("img").mouseout( function(){ //离开元素
        $(this).css( "border","2px solid white" );
        } );
        </script>
    </body>

鍵盤事件

 <form action="">
          <p>帐号: <input id="a" value="请输入帐号..."> </p>
          <p>电话: <input id="b"> </p>
</form>
 <script>
            //获得焦点(激活/点击一下)
            $("#a").focus(function(){
            $(this).val("");
            });
            //失去焦点(未激活/未点击)
            $("#a").blur(function(){
            $(this).val("请输入帐号...");
            });
   </script>

Dom的操作

操作節點

<body>
    <input id="input1"  placeholder="輸入">
    <ul>
        <li>1</li>
        <li>2</li>
    </ul>
    <button id="test1">添加</button>
    <button id="addBefore">加入第一行</button>
    <button id="addAfter">加入最後一行</button>
    <button id="replace">替換內容</button>
    <button id="clone">複製添加</button>
    <button id="remove">移除最後的節點</button>
    <button id="removeAll">清空節點內容</button>
    <script>
      //前兩種函數是操作父子的節點
      $("#test1").click(function(){
           var value = $("#input1").val()
           var newli = $("<li>"+value+"</li>")
           //兩種方法皆可以
          // $("ul").append(newli)
           newli.appendTo("ul")
      })
      $("#addBefore").click(function(){
           var value = $("#input1").val()
           var newli = $("<li>"+value+"</li>")
           //兩種方法皆可以
           $("ul").prepend(newli)
           //兩種方法皆可以
           newli.prependTo("ul")
      })
      //修改同輩節點
      $("#addAfter").click(function(){
           var value = $("#input1").val()
           var newli = $("<li>"+value+"</li>")
           //兩種方法皆可以
          // $("li:last").after(newli)
           newli.insertAfter("li:last")
           
      })
      //替換同輩節點
      $("#replace").click(function(){
           var value = $("#input1").val()
           var newli = $("<li>"+value+"</li>")
         
           //newli.replaceAll("li:eq(1)")

           $("li:eq(1)").replaceWith(newli)
           
      })
      //複製節點
    $("#clone").click(function(){

    $("li:eq(1)").clone().insertAfter("li:last")

    })
    //移除節點
    $("#remove").click(function(){

        $("li:eq(1)").remove()

    })
    //移除節點
    $("#removeAll").click(function(){

        $("li:eq(1)").empty()

    })

      
           
    </script>
    
</body>

節點的遍歷

尋找祖先節點

用于向上遍历 DOM 树的方法 parent() 返回被选元素的直接父元素,仅仅是上一级 (找爸爸) parents() 返回被选元素的所有祖先元素,它一路向上直到文档的根元素,可以选择辈分

   $("#test").click(function(){
            var x = $("b").parent().html();
            alert(x)
            var y = $("b").parents("ul").html();
            alert(y)
            
        })
尋找同輩元素

next() 获取紧邻匹配元素之后的元素 prev() 获取紧邻匹配元素之前的元素 siblings( [selector] ) 获取位于匹配元素前面和后面的所有同辈元素

<script>
  $("#bor").click(function(){
            //下一個
            var x = $("ul").next().text()
            alert(x)
            //上一個
            var y = $("b").prev().text()
            alert(y)
            //id為p1,缺省指的是全部相鄰節點
            var z = $("b").siblings("#p1").text()
            alert(z)
            
        })
</script>
後代元素的遍歷

children( [selector] ) 方法返回被选元素的所有直接子元素

find( 选择器 ) 方法返回被选元素的后代元素,一路向下直到最后一个后代。

<script>
 $("#child").click(function(){
            
            var x = $("ul").children().text();
            alert(x)
            var y = $("ul").children("li:first").text();
            alert(y)
            var z = $("ul").find("b").text();
            alert(z)

        })
</script>
元素的過濾

first():过滤第一个元素 last():过滤最后一个元素 eq(index):过滤到下标为index的元素 not():除了什么之外的元素 is():返回布尔,判断是不是这种元素

<script>
   //過濾
        $("#grep").click(function(){
            //第一個
            var x = $("li").first().text()
            alert(x)
            //最後一個
            var y = $("li").last().text()
            alert(y)
            //序號為1
            var o = $("li").eq(1).text()
            alert(o)
            //除了序號為1的
            var p = $("li").noeq(1).text()
            alert(p)
            //判斷父節點是否為li
            var q = $("b").parent().is("li")
            alert(q)



        })
</script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery.js"></script>
</head>
<body>
    <div>
        <ul>
            <li>1</li>
            <li>
                
                <p id="p1">23</p>
                
                <b>b</b>
            </li>
            <li>2</li>
        </ul>
        <p>數據</p>
            

            
            
    </div>
    <button id="test">獲取父節點數據</button>
    <button id="bor">獲取相鄰節點元素</button>
    <button id="child">獲取子節點元素</button>
    <button id="grep">過濾</button>
         
    <script>
        $("#test").click(function(){
            var x = $("b").parent().html();
            alert(x)
            var y = $("b").parents("ul").html();
            alert(y)
            
        })
        $("#bor").click(function(){
            //下一個
            var x = $("ul").next().text()
            alert(x)
            //上一個
            var y = $("b").prev().text()
            alert(y)
            //id為p1,缺省指的是全部相鄰節點
            var z = $("b").siblings("#p1").text()
            alert(z)
            
        })
        //獲取子節點
        $("#child").click(function(){
            
            var x = $("ul").children().text();
            alert(x)
            var y = $("ul").children("li:first").text();
            alert(y)
            var z = $("ul").find("b").text();
            alert(z)

        })
        //過濾
        $("#grep").click(function(){
            //第一個
            var x = $("li").first().text()
            alert(x)
            //最後一個
            var y = $("li").last().text()
            alert(y)
            //序號為1
            var o = $("li").eq(1).text()
            alert(o)
            //除了序號為1的
            var p = $("li").noeq(1).text()
            alert(p)
            //判斷父節點是否為li
            var q = $("b").parent().is("li")
            alert(q)



        })

      
    </script>
    
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值