2.03.23jQuery

2.03.23 jQuery

1.概念

  • 是一个js封装的一个函数,jq里面有许多js封装的方法
  • jQuery 是一个快速、小型且功能丰富的 JavaScript 库。它使 HTML 文档遍历和操作、事件处理、动画和 Ajax 之类的事情变得更加简单,它具有易于使用的 API,可在多种浏览器中使用。jQuery 结合了多功能性和可扩展性,改变了数百万人编写 JavaScript 的方式。
  • jQuery是个函数, 符 号 是 j Q u e r y 的 别 名 , j Q u e r y = = = 符号是jQuery的别名, jQuery=== jQueryjQuery===(true) typeof(jQuery) “function”
  • 简单看一看相关代码,认识jq:
    <script src="../js/jquery-3.6.0.min.js"></script>
    <script>
        // jQuery 是个函数
        // $ 是个函数,是jQuery的别名
        // jQuery === $   true

        // console.log(jQuery); // 函数  
        // console.log(typeof jQuery); // 'function'
        // console.log($); //函数
        // console.log(typeof $);// 'function'
        // console.log(jQuery === $);// true

        // JS 加载函数
        // window.onload = function(){ console.log("load 11") }
        // window.onload = function(){ console.log("load 22") }

        // JQ 入口函数
        // $(document).ready(function(){
        //     console.log("ready 11");
        // })

        // $(document).ready(function(){
        //     console.log("ready 22");
        // })

        // 入口函数简写:
        // $(function(){
        //     console.log("执行JQ代码 11");
        // })
        // $(function(){
        //     console.log("执行JQ代码 22");
        // })
        
        // 如果想控制页面的div.box标签,jq代码写在div.box之后即可
        // $(".box") 表示获取页面上div.box标签,返回jquery对象
        // .css("width",100); 表示是div.box的css属性和属性值
        $(".box").css("width",100);
        $(".box").css("height",100);
        $(".box").css("background","red");

        // jQuery(".box").css("width",100);
        // jQuery(".box").css("height",100);
        // jQuery(".box").css("background","green");

    </script>

2.模仿jq去封装自己的jq

  • 自己封装的jq
    /*
    *  author: ok
    *  time: 2022-03-23 15:30
    *  library: JS库
    * 
    */  
    // 匿名函数
    (function(win,dom){
        // 封装函数A(普通函数)
        var myJquery = function(selector){
            // console.log("test");
            // 返回构造函数的实例(属性和方法)
            return new S(selector)
        }
        //  封装函数B(构造函数)
        function S(selector){
            // 记录数据
            this.element = dom.querySelector(selector);
        }
        // 添加Css方法
        S.prototype.css = function(prop,value){
            // 处理元素的css样式
            if(typeof value == 'string'){
                if(value.indexOf("px")){
                    this.element.style[prop] = value
                }else {
                    var v = parseInt(value)
                    if(typeof v == 'number'){
                        this.element.style[prop] = value + "px";
                    }else {
                        this.element.style[prop] = value;
                    }
                }
            }else {
                this.element.style[prop] = value +"px"
            }
        }

        // 把封装函数A挂载到window对象
        win.myjQuery = win.my$ = win._ = myJquery;
    })(window,document)
  • 使用自己封装的jq
    <!DOCTYPE html>
    <html lang="zh_cn">
    <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>
    </head>
    <body>
        <h3>模拟jquery</h3>

        <div class="box"></div>

        <!-- 引入自定义的myjQuery文件 -->
        <script src="./myjQuery.js"></script>

        <script>

            // 可以调用自定义的myjQuery函数
            // my$(".box")

            // 调用my$函数也是一样
            // my$(".box").css("width",100);
            // my$(".box").css("height",100);
            // my$(".box").css("backgroundColor","red");

            // 调用_函数也是一样 
            _(".box").css("width",100);
            _(".box").css("height",100);
            _(".box").css("backgroundColor","blue");

        </script>
    </body>
    </html>

3.常用的jQuery的DOM操作

1.常用DOM操作自划分第一类

  1. 获取元素
  • 语法:$(选择器)
  • 对比:
    var ele = document.querySelector(选择器)
    ele 是个dom对象(标签)

    var $obj = $(选择器)
    $obj 是jquery对象(实例)
  • jquery有个强大的选择器函数 (核心功能),例如:
    <!DOCTYPE html>
    <html lang="zh_cn">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>JQ 学习 </title>
    </head>
    <body>
        <h3>jquery的DOM操作</h3>
        <div class="box">111</div>
        <div id="demo">222</div>
        <div data-role="div">333</div>

        <ul>
            <li>列表aaa</li>
            <li>列表bbb</li>
            <li>列表ccc</li>
        </ul>

        <script src='./jquery/jquery-3.6.0.min.js'></script>
        <script>
            // 获取元素
            var $obj =  $(".box");
            // jquery对象 一个数组
            // console.log($obj);
            $obj[0].style["background-color"]="red";
            console.log(typeof $obj);//object

            // 获取.box的div元素 记录在jquery对象中
            console.log($(".box"));
            // 获取#demo的div元素 记录在jquery对象中
            console.log($("#demo"));
            // 获取div[data-role='div']的div元素  记录在jquery对象中
            console.log($("div[data-role='div']"));
            // 获取所有的li标签 把这些标签记录在jquery对象中
            console.log($("ul li"));

            // 总结:
                // jquery有个强大的选择器函数 (核心功能)
                // $()
                // 需要获取指定的元素,直接$(选择器)

        </script>
    </body>
    </html>
  1. 添加元素
  • jq对象.append(html字符串)

    • 在容器元素的最后的索引位置添加元素
  • jq对象.prepend(html字符串)

    • 在容器元素的索引值为0的位置添加元素
  • jq对象.before(html字符串)

    • 在当前元素的前面插入元素
  • jq对象.after(html字符串)

    • 在当前元素的后面插入元素
  • 语法:

    <div id="container">
        <div class="box-1">1111</div>
    </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        var divStr2 = "<div class='box-2'>22222</div>";
        var divStr3 = "<div class='box-3'>33333</div>";
        var divStr0 = "<div class='box-0'>00000</div>";

        // $obj.append(html字符串)
        // 在容器元素的最后的索引位置 添加元素 (父子关系)
        // 应用场景:上拉加载(滚动加载)
        $("#container").append(divStr2);
        $("#container").append(divStr3);

        // $obj.prepend(html字符串)
        // 在容器元素的索引为0的位置 添加元素(父子关系)
        // 应用场景:下拉加载
        $("#container").prepend(divStr0);


        // $obj.before(html字符串)
        // 在当前的元素之前插入元素(兄弟关系)
        var divStra = "<div class='box-a'>aaaaaaaa</div>";
        $(".box-1").before(divStra);

        // $obj.after(html字符串)
        // 在当前的元素之后插入元素(兄弟关系)
        var divStrb = "<div class='box-b'>bbbbbbbb</div>";
        $(".box-1").after(divStrb);
</script>    
  1. 删除元素
  • jq对象.remove()
    • 删除当前元素
  • jq对象.empty()
    • 清空当前容器的内容
  • jq对象.html=“”
    • 清空当前容器的内容
  • 语法:
    <div id="layout">
        <div class="demo-1">demo-1</div>
        <div class="demo-2">demo-2</div>
    </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        // 删除元素
        //$(".demo-1").remove();
        // 清空容器的内容
        //$("#layout").empty();
        //$("#layout").html("");
</script>
  1. 设置文本
  • jq对象.text(文本内容)
    • 设置当前元素的文本内容
  • jq对象.html(超文本内容)
    • 设置当前元素的超文本内容
  • jq对象.val(内容)
    • 设置输入框的内容
  • 语法:
    <div id="layout">
        <div class="demo-2">demo-2</div>
        <div class="demo-3">demo-3</div>
        <input type="text" class="demo-4" value="输入框、关键字">
        
    </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        $(".demo-2").text("demo-2 123");//设置纯文本
        console.log($(".demo-2").text());

        $(".demo-3").html("<b>demo-2 456 </b>");//设置超文本
        console.log($(".demo-3").html());

        $(".demo-4").val("hello world");// 设置输入框的文本
        console.log($(".demo-4").val());
</script> 

  1. 设置样式
  • jq对象.css(“属性名”,属性值) 或者 jq对象.css(属性对象)
    • 设置当前对象的属性
  • 语法:
    <div id="layout">
        <div class="demo-5">demo-5</div>
    </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        // $obj.css(属性名称,属性值)
        $(".demo-5").css("width",200);

        // $obj.css(属性对象)
        $(".demo-5").css({
            width: 200,
            height: 200,
            backgroundColor: "green"
        })

</script>      

  • 注意:css方法有隐式遍历的功能
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
    
    <script src='./jquery/jquery-3.6.0.min.js'></script>
    <script>
    // 需求:
        // 设置5个按钮的背景色

    // JQ:
    $("button").css("backgroundColor","deepskyblue");



    // JS:
    // var buttons = document.querySelectorAll("button");
    // for(var i = 0 ; i < buttons.length ; i ++){
    //     buttons[i].style.backgroundColor = "yellowgreen";
    // }


    // 总结:
        // jquery获取元素,返回的是jquery对象
        // css 方法是由jquery对象调用
        // css 方法封装过程,已经对获取的元素进行了遍历
        // jq其中一个特点:隐式迭代(函数封装,内部循环)
    </script>
  1. 设置属性
  • jq对象.attr(“属性名”)
    • 获取当前对象的属性
  • jq对象.attr(“属性名”,“属性值”)
    • 设置当前元素的属性
  • jq对象.removeAttr(“属性名”)
    • 删除当前元素的属性
  • 语法:
    <div id="layout">
        <input type="button">
    </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        var type = $("#layout input").attr("type");//获取type属性
        console.log(type);
        //$("#layout input").attr("type","text");//设置type属性
        //$("#layout   input").removeAttr("type");//删除type属性

</script>   
  1. 控制类名
  • jq对象.addClass(“属性名”)
    • 添加类名
  • jq对象.removeClass(“属性名”)
    • 删除类名
  • jq对象.toggleClass(“属性名”)
    • 切换类名(有,则删除;无,则添加)
  • jq对象.hasClass(“属性名”)
    • 判断是否包含某个类名
  • 语法:
    <style>
        .active {
            background-color: red;
        }
    </style>

    <div id="layout">
        <div class="demo-6">demo-6</div>
    </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        $(".demo-6").addClass("active");// 添加类名
        $(".demo-6").removeClass("active");//删除类名
        $(".demo-6").toggleClass("active");//切换类名(有,则删除;无,则添加)
        $(".demo-6").toggleClass("active");
        var isHas = $(".demo-6").hasClass("active");//判断是否包含某个类名
        console.log("isHas:",isHas); 
        console.log($(".demo-6"));//jq数组对象

</script>  
  • 可以发现这几个方法也有隐式遍历的作用,因为可知 $(“.demo-6”)得到的是一个jq数组对象

2.jq对象.eq方法

  • 语法:
    <div id="container">
        <div>container</div>
        <section>
            <div>section</div>
            <button>按钮1</button>
            <button>按钮2</button>
            <button class="btn-3">按钮3</button>
            <button>按钮4</button>
            <button>按钮5</button>
        </section>
   </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
    $("#container button").eq(2).css("backgroundColor","red");
    console.log($("#container button"));//长度为5的数组
    console.log(typeof $("#container button"));//object
    console.log($("#container button").eq(2));//长度为1的数组
    console.log(typeof $("#container button").eq(2));//object
    console.log($("#container button").eq(2)[0]);//<button class="btn-3" style="background-color: red;">按钮3</button>
  • eq方法获取的结果也是一个数组,要想获取到元素对象得在下面加上相应的下标

3.常用DOM操作自划分第三类

  1. jq对象.children(选择器)
  • 参数可选 获取全部子元素或者指定的子元素
  1. jq对象.parent()
  • 获取父元素
  1. jq对象.prev()
  • 获取上一个兄弟元素
  1. jq对象.next()
  • 获取下一个兄弟元素
  1. jq对象.siblings(选择器)
  • 获取兄弟元素(除了自身以外)
  1. jq对象.find(选择器)
  • 获取容器标签的指定的后代元素
  • 语法:
<div id="container">
        <div>container</div>
        <section>
            <div>section</div>
            <button>按钮1</button>
            <button>按钮2</button>
            <button class="btn-3">按钮3</button>
            <button>按钮4</button>
            <button>按钮5</button>
        </section>
   </div>
    
<script src="../js/jquery-3.6.0.min.js"></script>
<script>
        // 获取#container子元素
        // $obj.children(选择器),不设置参数也可以的  
        // $("#container").children().css("backgroundColor","blue");
        $("#container").children("section").css("backgroundColor","blue");

        // 获取section标签的父元素
        // $obj.parent()
        $("section").parent().css("backgroundColor","gray");


        // 获取当前标签的上一个元素
        $("#container .btn-3").prev().css("backgroundColor","green");


        // 获取当前标签的下一个元素
        $("#container .btn-3").next().css("backgroundColor","purple");

        // 获取兄弟元素(除了自身以外)
        // $("#container .btn-3").siblings(选择器)
        $("#container .btn-3").siblings("button").css("border-radius","20px");


        // 获取容器标签的指定的后代元素
        // $("#container").find(选择器)
        $("#container").find("div").css("backgroundColor","white");
</script>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值