JQuery详解

JQuery 介绍

  • JQuery由美国人John Resig(约翰 莱西格)于2006年创建
  • JQuery是目前最流行的JavaScript程序库,它是对JavaScript对象和函数的封装
  • 它的设计思想是write less , do more
  • 实现隔行变色,JavaScript要循环加判断,而JQuery只需要一句关键代码
$("tr:even").css("background-color"),"#ccc");

JQuery能做什么

  • 访问和操作DOM元素
  • 控制页面样式
  • 对页面时间进行处理
  • 扩展新的JQuery插件
  • 与Ajax技术完美结合

JQuery能做到的JavaScript也都能做到,但使用JQuery能大幅度提高开发效率

其实,JQuery和JavaScript之间的关系,可以理解为“成语” 和“白话文”之间的关系。成语是对白话文的高度压缩,而JQuery也是对JavaScript的高度压缩库

JQuery的优势

  • 体积小,,压缩后只有100kb左右
  • 强大 的选择器
  • 出色的DOM封装
  • 可靠的事件处理机制
  • 出色的浏览器兼容性

JQuery下载

进入JQuery官网:http://jQuery.com

JQuery的使用

jQuery作为一个单独存在的js文件,并不会与其他的js文件发生冲突
在页面中使用传统引入js文件的方式引入即可

<script src = "js/jquery-3.4.1.min.js"></script>

基本语法介绍

<script>
   $(selector).action();
</script>

说明:

  • 工厂函数 $():将DOM对象转化为jQuery对象
  • 选择器selector:获取需要操作的DOM元素(用法基本与CSS一致)
  • 方法action():jQuery中提供的方法,其中包括绑定事件处理的方法"$"等同于“JQuery”
  • 例如:
<body>
   <p>hello</p>
<body>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
   alter(  $("p").text()  );
</script>

jQuery对象与DOM对象

DOM对象和jQuery对象分别拥有一套独立的方法,不能混用

$("title").html();
//等同于
documet.getElementById("title").innerHTML;

想混用,要转换

  • DOM对象转JQuery对象
var a = document.getElementById("name");   //a是DOM对象
var b = $(a);    //b是jQuery对象
  • JQuery对转DOM对象
var a = $("#name");    //a是JQuery对象
var b = jqObject.get(0) ;    //b是DOM对象

选择器

基本选择器

基本选择器包括标签选择器、类选择器、ID选择器、并集选择器、交集选择器和全局选择器

在这里插入图片描述

层次选择器

在这里插入图片描述

<!Doctype html>
<html>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=divice-width,initial-scale=1.0">
    <title>Document</title>
</html>

<body>

    <div id="x">
        111
        <p>p1</p>

        <div>
            <p>p2</p>
        </div>
    </div>

    <h3>222</h3>
    <h3>333</h3>



    <script src="js/jquery-3.4.1.min.js"></script>
    <script>
        $("#x p").css("color","red");  //后代选择器,忽略层级
		
		$("#x>p").css("color","red");  //子代选择器,只负责子级
		
		$("#x+h3").css("color","red");  //相邻选择器,下一个紧邻兄弟h3
		
		$("#x~h3").css("color","red");  //同辈选择器,下面的所有兄弟h3
		
    </script>
</body>

属性选择器

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width , initial-scale=1.0">
		<title>Document</title>
	</head>
	<body>
		<a href="http://www.baidu.com">百度网</a>
		<a href="http://www.sina.com.cn">新浪网</a>
		<a href="http://www.163.com">网易</a>
		<p href="x">hhh</p>
		<p href="x" title="x">hhh2</p>
		<script src="./jquery-3.4.1.min.js"></script>
		
		<script>
		   // $("[href]").css("color","red");   //选取拥有href属性的元素
		   
		   //$("[href='x']").css("color","red");   //选取拥有href = x属性的元素
		   
		   // $("[href!='x']").css("color","red");   //选取拥有href 不等于 x属性的元素
		   
		   // $(a"[href!='x']").css("color","red");   //选取a标签中href 不等于 x属性的元素
		   
		   // $("[href ^= 'www']").css("color","red");   //选取拥有href属性以www开头的元素
		   
		   // $("[href $= 'com']").css("color","red");   //选取拥有href属性以com结尾的元素
		   
		   // $("[href *= 'a']").css("color","red");   //选取拥有href 属性包含a的元素
		   
		   $("p[href][title='x']").css("color","red");   //选取拥有href属性 和 title属性,并且title=x的p元素
		</script>
		
	</body>
</html>

过滤选择器

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0">
		<title>Document</title>
	</head>
	<body>
		
		<h2>修仙小说</h2>
		<ul>
			<li>凡人修仙传</li>
			<li>遮天</li>
			<li>神墓</li>
			<li>残袍</li>
			<li>大主宰</li>
		</ul>
		
		<script src="jquery-3.4.1.min.js"></script>
		<script>
		
		   // $("li:first").css("color","red");   //第一个li
		   
		   // $("li:last").css("color","red");   //最后一个li
		   
		   // $("li:even").css("color","red");   //偶数行li
		   
		   // $("li:odd").css("color","red");   //奇数行li
		   
		   // $("li:eq(2)").css("color","red");   //下标为2的li
		   
		   // $("li:gt(1)").css("color","red");   //下标大于1的li
		   
		   $("li:lt(2)").css("color","red");   //下标小于2的li
		   
		</script>
	</body>
</html>

事件

鼠标事件

鼠标事件是当用于在文档上移动或单击鼠标时而产生的事件,常用的鼠标事件有:
在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0">
		<title>Document</title>
	</head>
	<body>
		
		<img src="img/pic_four.png" width="300" />
		<img src="img/pic_four.png" width="300" />
		<img src="img/pic_four.png" width="300" />
		<script src="jquery-3.4.1.min.js"></script>
		
		<script>
		
		  $("img").click(function(){
			  //点击一下换照片
			  $(this).attr("src","img/pic_five.png");   //this就是事件触发的源头
		  });
		  
		  
		  $("img").mouseover(function(){
			  $(this).css("border","2px solid red");  //移动到元素上
		  });
		  
		  
		  $("img").mouseout(function(){
		  	 $(this).css("border","2px solid white");  //离开元素
		  });
		</script>
	</body>
</html>

键盘事件

用户每次按下或释放键盘上的键时都会发生事件,常用的键盘事件有:
在这里插入图片描述

表单事件

当元素获得焦点时,会触发focus事件,失去焦点时,会触发blur事件,详见下表:

方法描述
focus()触发或将函数绑定到指定元素的focus事件
blur()触发或将函数绑定到指定元素的blur事件
<!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>
</head>
<body>
    <form action="">
        <p>账号:<input id = "a" value="请输入账号..."></p>
        <p>电话:<input id = "b"></p>
    </form>

    <script src="./jquery.min.js"></script>
    <!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js"></script> -->

    <script>
        // 获得焦点(激活/点击一下)
        $("#a").focus(function(){
            $(this).val("");
        });

        // 失去焦点(未激活/未点击)
        $("#a").blur(function(){
            $(this).val("请输入账号...");
        });
    </script>

    
</body>
</html>

鼠标悬停复合事件

hover()方法相当于mouseover与mouseout事件的组合。

<!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>
</head>
<body>
    <img src="./images/1.jpg" width="400px" height="300px">

    <script src="./jquery.min.js"></script>
    <script>
        $("img").hover(
            function(){
                $(this).css("border","5px solid red");
            },
            function(){
                $(this).css("border","5px solid white");
            }
        );
    </script>
</body>
</html>

连续点击复合事件

 <!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>
 </head>
 <body>
    <h2>修仙小说</h2>
    <ul>
        <li>凡人修仙传</li>
        <li>遮天</li>
        <li>神墓</li>
        <li>残袍</li>
        <li>大主宰</li>
    </ul>

    <script src="./jquery.min.js"></script>

    <script>
        $("h2").click(function(){
            $("ul").toggle();
        });
    </script>
 </body>
 </html>

事件的动态绑定

<!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>
</head>
<body>
    <h2>点我试试</h2>

    <script src="./jquery.min.js"></script>

    <script>
        $("h2").on("click mouseover",function(){
            alert("点我或移动上来");
        })
    </script>
</body>
</html>

元素的隐藏和显示

改变元素的宽和高(带动画效果)

  • show(speed)
  • hide(speed)
  • toggle(speed)等价于show + hide :显示的隐藏,隐藏的显示
    可选的speed参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast”或毫秒
<!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>
</head>
<style>
    div{
        width: 200px;
        height: 200px;
        background-color: black;
    }
</style>
<body>
    <button id="btn1"> 显示</button>
    <button id="btn2">隐藏</button>
    <button id="btn3">切换</button>


    <div></div>

    <script src="jquery.min.js"></script>
    <script>
        // fast:快速的
        // slow:缓慢的
        // 毫秒:自定义
        $("#btn2").click(function(){
            $("div").hide('fast');
        });

        $("#btn1").click(function(){
            $("div").show('slow');
        });

        $("#btn3").click(function(){
            $("div").toggle('slow');
        });
    </script>
</body>
</html>

改变元素的高(拉伸效果)

  • slideDown(speed)
  • slideUp(speed)
  • slideToggle(speed)等价于slideDown + slideUp
    可选的speed参数规定隐藏/显示的速度,可以取以下值:“slow” 、 “fast”或毫秒
<!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>
</head>
<style>
    div{
        width: 200px;
        height: 200px;
        background-color: black;
    }
</style>
<body>
    <button id="btn1"> 显示</button>
    <button id="btn2">隐藏</button>
    <button id="btn3">切换</button>


    <div></div>

    <script src="jquery.min.js"></script>
    <script>
        $("#btn2").click(function(){
            $("div").slideUp('fast');
        });

        $("#btn1").click(function(){
            $("div").slideDown('slow');
        });

        $("#btn3").click(function(){
            $("div").slidetoggle('slow');
        });
    </script>
</body>
</html>

不改变元素的大小(淡入淡出效果)

  • fadeIn(speed)显示
  • fadeOut(speed)隐藏
  • fadeToggle(speed)等价于fadeIn+fadeOut动画
  • fadeTo(speed,透明度)方法允许渐变为给定的不透明度(值介于0与1之间)
    可选的speed参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<!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>
</head>
<style>
    div{
        width: 200px;
        height: 200px;
        background-color: black;
    }
</style>
<body>
    <button id="btn1"> 显示</button>
    <button id="btn2">隐藏</button>
    <button id="btn3">切换</button>
    <button id="btn4">透明</button>


    <div></div>

    <script src="jquery.min.js"></script>
    <script>
        $("#btn2").click(function(){
            $("div").fadeOut('fast');
        });

        $("#btn1").click(function(){
            $("div").fadeIn('slow');
        });

        $("#btn3").click(function(){
            $("div").fadeToggle('slow');
        });

        $("#btn4").click(function(){
            $("div").fadeTo(1000,0.5);
        });
    </script>
</body>
</html>

链是允许我们在同一个元素上在一条语句中运行多个jQuery方法,可以把动作/方法链接在一起。
例如:点击一次按钮,让div完成4个指定动作。

1.背景变红
2.字体变绿
3.收缩
4.拉伸

<!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>
</head>

<style>
    div{
        width: 200px;
        height: 200px;
        background-color: black;
        color: white;
        font-size: 3em;
    }
</style>
<body>
    <button>试试</button>
    <div>hello</div>
    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
            $("div").css("background-color","red").css("color","green").slideUp(1000).slideDown(1000);
        });
    </script>
</body>
</html>

DOM 和 CSS的操作

属性函数

  • attr(“属性”); 获得元素的属性值
    attr(“属性”,“新值”); 修改元素的属性值
    attr(样式参数) :样式参数可以写成json格式
  • val(); 获得表单元素中的value值
    val(“x”)修改表单元素中的value值
  • html();获得元素中的内容(标签+文本)
    html(“x”)修改元素中的内容(标签+文本)
  • text();获得元素中的文本
    text(“x”)修改元素中的文本
<!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>
</head>
<body>
    <button>试试</button>
    <hr>
    <input id="username">

    <div>
        <h1><i>11111</i></h1>
    </div>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
        //    alert($("input").val());   //input框中的值
        // $("input").val("哈哈哈哈");  //修改input框中的值

        // alert($("div").html());  //获得div中的内容(包含标签信息)
        // alert($("div").text());//获得div中的内容(不包含标签信息,只包含文本)

        // $("div").text("祖国万岁"); //修改div中的内容(全部内容都覆盖)
        });
    </script>
</body>
</html>

样式函数

  • css(“属性”);获得该属性值
  • css(“属性”,“值”);设置属性的值
  • css({json});设置多个属性的值
<!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>
</head>

<style>
    div{
        width: 150px;
        height: 150px;
        background-color: #000;
    }
</style>
<body>
    <button>试试</button>
    <hr>

    <div></div>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
            // var w = $("div").css("width");  //获得css属性,width的值
            // alert(w);
            // 1.一个键值对
            // $("div").css("background-color","pink");
            
            // 2.链式编程
            // $("div").css("background-color","pink").css("border-radius","50%");

            // 3.json为参数
            $("div").css({
                opacity:"0.4",
                background:"orange",
                borderRadius:"50%"
            });
        });
    </script>
</body>
</html>
  • width();获得元素的宽度
  • height();获得元素的高度
  • height(number);修改元素的高度
<!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>
</head>

<style>
    div{
        width: 150px;
        height: 150px;
        background-color: #000;
    }
</style>

<body>
    <button>试试</button>
    <hr>

    <div></div>

    <script src="jquery.min.js"></script>
    <script>
        $("button").click(function(){
            var w = $("div").width();//(无参)获取宽度
            var h = $("div").height();//(无参)获取高度
            // alert("宽:"+w+"px,高:"+h+"px")

            $("div").width("300");//(传参)修改宽度
            $("div").height("300");//(传参)修改高度
        });
    </script>
</body>
</html>

类样式函数

  • addClass();为元素添加类样式
  • removeClass();将元素的类样式移除
  • toggleClass();样式的切换(有->无,无->有)
<!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>
</head>

<style>
    div{
        width: 100px;
        height: 100px;
        background-color: #000;
    }

    .a{
        background-color: palevioletred;
        border-radius: 50%;
    }

    .b{
        border: 5px dashed darkcyan;
        opacity: 0.6;
    }

    .cn{
        background-color: #000;
        color: #fff;
        font-family: 楷书;
    }
</style>
<body>
    <button id="bnt1">试试</button>
    <button id="bnt2">取消透明度</button>
    <button id="bnt3">样式切换</button>
    <hr>
    <div></div>
    <h1>哈哈哈</h1>
    <script src="jquery.min.js"></script>

    <script>
        $("#bnt1").click(function(){
            // $("div").addClass("a");

            $("div").addClass("a b"); 
        });

        $("#bnt2").click(function(){
            $("div").removeClass("b");
        });

        $("#bnt3").click(function(){
            $("h1").toggleClass("cn");
        });
    </script>
</body>
</html>

节点操作

  • 创建节点
    工厂函数$()用于获取或创建节点

  • 插入节点
    插入子节点
    在这里插入图片描述

  • 插入同辈节点

在这里插入图片描述

  • 替换节点
    replaceWith()
    replaceAll()
  • 复制节点
    clone()
  • 删除节点
    remove()删除整个节点
    empty()清空节点内容
<!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>
    <style>
        li:hover {
            cursor: pointer;
        }
    </style>
</head>
<body>

    <input id="text"><button id = "add">添加</button>
    <ul>
        <li onlick='aaa()'>三国演义</li>
        <li>红楼梦</li>
        <li>西游记</li>
    </ul>
    
    <script src="jquery.min.js"></script>

    <script>
        $("#add").click(function(){
            console.log("aaa");
            var bookname = $("#text").val();
            var newli = $("<li>" + bookname +"</li>");//通过工厂函数,创建新的li节点

            // 添加子节点
            // $("ul").append(newli);  //newli添加到ul后面
            // newli.appendTo("ul");  //newli添加到ul后面

            // $("ul").prepend(newli);  //newli添加到ul前面
            // newli.prependTo("ul");//newli添加到ul前面

            // 添加同辈节点
            // $("li:last").after(newli);//newli添加到最后的li后面
            // newli.insertAfter("li:last");

            // $("li:last").before(newli); //newli添加到最后的li的前面
            // newli.insertBefore("li:last");

            // 替换节点
            // $("li:eq(0)").replaceWith(newli);  //将第一个li替换为newli
            // newli.replaceAll("li:eq(0)");

            // 复制节点
            // $("li:first").clone().insertAfter("li:last");//复制第一个li,并插入到最后一个li后面

            // 删除节点
            // $("li:eq(0)").empty();//清空节点上的文本(节点并没有消失)

            $("li:eq(1)").remove();  //删除节点

        });
    </script>
</body>
</html>

遍历节点

祖先元素

用于向上遍历DOM树的方法

  • parent()返回被选元素的直接父元素,仅仅是上一级
  • parents()返回被选元素的所有祖先元素,它一路向上直到文档的根元素,可以选择辈分。
<!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>
</head>
<body>
    
    <p><button>测试</button></p>

    <ul>
        <li>a</li>
        <li><b>b</b></li>
        <li>c</li>
    </ul>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
             // var x = $("b").parent().html();
            // var x = $("b").parents("ul").html();
            var x = $("b").parents("body").html();
            alert(x);
        });
    </script>
</body>
</html>

同辈元素

  • next()获取紧邻匹配元素之后的元素
  • prev()获取紧邻匹配元素之前的元素
  • siblings()获取位于匹配元素前面和后面的所有同辈元素
<!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>
</head>
<body>
    <button>测试</button>
    <p>p1</p>

    <ul>
        <li>a</li>
        <li><b>b</b></li>
        <li>c</li>
    </ul>

    <p>p2</p>
    <p id = "x">p3</p>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
            // var x = $("ul").next().text();  //紧邻的下一个元素
            // var x = $("ul").prev().text();   //紧邻的上一个元素
            // var x = $("ul").siblings("#x").text();//所有的兄弟中,ID= x的
            var arr = $("ul").siblings();
            for(var i = 0 ; i < arr.length;i++){
                alert(arr[i]);
            }
            alert(x);
        }); 
    </script>
</body>
</html>

后代元素

后代是子、孙、曾孙等等

  • children()方法返回被选元素的所有直接子元素,“孩子”
<!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>
</head>
<body>
    <button>测试</button>
    <ul>
        <li>a</li>
        <li>b</li>
        <li>c</li>
    </ul>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
        //    var x = $("ul").children().text();
        var x = $("ul").children("li:first").text();

      
           alert(x);
        });
    </script>
</body>
</html>  
  • find(选择器)方法返回被选元素的后代元素,一路向下知道最后一个后代
<!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>
</head>
<body>
    <button>测试</button>
    <ul>
        <li>a</li>
        <li>b</li>
        <li>c
            <p>d</p>
        </li>
        <h3>e</h3>
    </ul>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
        //    var x = $("ul").find("p").text();
        // var x = $("ul").find("h3").text();
        var x = $("ul").find().text();
           alert(x);
        });
    </script>
</body>
</html>  

元素的过滤

  • first():过滤第一个元素
  • last():过滤最后一个元素
  • eq(index):过滤到下标为index的元素
  • not():除了什么之外的元素
  • is():返回布尔,判断是不是这种元素
<!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>
</head>
<body>
    <button>测试</button>
    <ul>
        <li>a</li>
        <li>b</li>
        <li>c</li>
    </ul>

    <script src="jquery.min.js"></script>

    <script>
        $("button").click(function(){
        // var x = $("li").first().text();//第一个li
        // var x = $("li").last().text();//最后一个li
        // var x = $("li").eq(1).text();//下标为1的li
        // var x = $("li").not("li:eq(1)").text();//除了下标为1的其余所有li
        var x = $("li").parent().is("ul"); //返回布尔型,li的父节点是不是ul
           alert(x);
        });
    </script>
</body>
</html>

案例:手风琴

<!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>
</head>

<style>
    dd{
        display: none;
    }
</style>
<body>
    <nav>
        <ul>
            <li>
                <dl>
                    <dt>求职</dt>
                    <dd>1.简历</dd>
                    <dd>2.面试</dd>
                    <dd>3.入职</dd>
                </dl>
            </li>
            <li>
                <dl>
                    <dt>教育</dt>
                    <dd>1.看视频</dd>
                    <dd>2.做作业</dd>
                    <dd>3.24小时在线辅导</dd>
                </dl>
            </li>
            <li>
                <dl>
                    <dt>3W创业</dt>
                    <dd>1.帮助小企业</dd>
                    <dd>2.头脑风暴</dd>
                    <dd>3.赚钱啦</dd>
                </dl>
            </li>
        </ul>
    </nav>


    <script src="jquery.min.js"></script>
    <script>
        $("nav dt").click(function(){
            $("dd").not($(this).siblings()).slideUp(500);
            $(this).siblings().slideToggle(500);
        });
    </script>
</body>
</html>

购物车结算

$(".jia").click(function(){
    var i = $(this).prev().text();
    i++ ;
    $(this).prev().text(i);

    var price = $(this).parent().prev().text();
    var zong = i * price;
    $(this).parent().next().text(zong);
    getTotal();
});

$(".jian").click(function(){
    var i = $(this).next().text();
    i-- ;

    if(i == 0){
        if(confirm("是否删除该商品?")){
            $(this).parents("tr").remove();
        }
    }else{
        $(this).next.text(i);
        var price = $(this).parent().prev().text();
        var zong = i * price;
        $(this).parent().next().text(zong);
    }
    getTotal();
});

// function getTotal() {
//     var sum = 0 ;
//     var arr = $("tr:not(tr:first)").find("td:last");
//     for(var i = 0 ; i < arr.length; i ++ ){
//         sum += Number(arr[i].innerHTML);
//     }

//     $("b").text(sum);
// }


function getTotal(){
    var sum = 0 ;
    $("tr:not(tr:first)").find("td:last").each(function(){
        sum += Number($(this).text());
    });
    $("b").text(sum);
}
<!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>
</head>
<style>
    .jian{
        border: 1px solid #999;
        display: inline-block;  /* 超链接a是行内元素,只能转换成行内块元素,才能改变宽和高 */
        width: 20px ;
        height: 20px;
        text-align: center;
        text-decoration: none;
    }

    .jia{
        border: 1px solid #999;
        display: inline-block;  /* 超链接a是行内元素,只能转换成行内块元素,才能改变宽和高 */
        width: 20px ;
        height: 20px;
        text-align: center;
        text-decoration: none;
    }
</style>
<body>
    <table border="1" cellspacing="0" width="400px">
        <tr>
            <td>商品编号</td>
            <td>名称</td>
            <td>单价</td>
            <td>数量</td>
            <td>总价</td>
        </tr>
        <tr>
            <td>1</td>
            <td>炸香肠</td>
            <td>3</td>
            <td>
                <a href="#" class="jian">-</a>
                <span>1</span>
                <a href="#" class="jia">+</a>
            </td>
            <td>3</td>
        </tr>

        <tr>
            <td>2</td>
            <td>王八</td>
            <td>10</td>
            <td>
                <a href="#" class="jian">-</a>
                <span>1</span>
                <a href="#" class="jia">+</a>
            </td>
            <td>10</td>
        </tr>

        <tr>
            <td>3</td>
            <td>恐龙</td>
            <td>1000</td>
            <td>
                <a href="#" class="jian">-</a>
                <span>1</span>
                <a href="#" class="jia">+</a>
            </td>
            <td>1000</td>
        </tr>
    </table>

    <p style="width: 400px;text-align: right;">
      总价:<b style="color: red;">111</b><button>提交订单</button>
    </p>

    <script src="jquery.min.js"></script>
    <script src="car.js"></script>
</body>
</html>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery 是一个非常流行的 JavaScript 库,它简化了 JavaScript 代码的编写和操作 DOM 的过程。以下是 jQuery 源码的逐行详解: ```javascript (function( global, factory ) { "use strict"; if ( typeof module === "object" && typeof module.exports === "object" ) { // 如果是 CommonJS 规范,则添加到模块中 // 在 Node.js 环境中,module 对象代表当前模块,exports 对象是 module 的属性,用于指定模块对外输出的接口。 // 通过 exports 对象把模块导出,其他文件就可以通过 require() 函数来引用该模块。 module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { // 如果是浏览器环境,则将 jQuery 添加到全局对象 window 中 factory( global ); } // 在这里传入了两个参数,global 和 factory,分别表示全局对象和一个工厂函数 }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { "use strict"; var deletedIds = []; var document = window.document; var slice = deletedIds.slice; var concat = deletedIds.concat; var push = deletedIds.push; var indexOf = deletedIds.indexOf; // ... ``` 这段代码定义了一个立即执行函数,其目的是为了防止变量污染全局作用域。如果是在 Node.js 环境中,那么需要将 jQuery 添加到模块中,否则将 jQuery 添加到全局对象 window 中。然后定义了一些变量,包括 deletedIds、document、slice、concat、push 和 indexOf 等。这些变量都是为了后面的代码服务。 ```javascript var version = "3.6.0", // 定义了一个空函数 jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); }, // ... ``` 这里定义了 jQuery 的版本号和 jQuery 函数。jQuery 函数是一个工厂函数,用于创建 jQuery 对象,其实现是通过调用 jQuery.fn.init 函数实现的。 ```javascript jQuery.fn = jQuery.prototype = { // jQuery 对象的方法和属性 }; jQuery.fn.init.prototype = jQuery.fn; ``` 这里定义了 jQuery 对象的原型,包括 jQuery.fn 和 jQuery.prototype。jQuery.fn 和 jQuery.prototype 是等价的,都是为了扩展 jQuery 对象的方法和属性。同时还将 jQuery.fn.init 的原型指向了 jQuery.fn,这样可以让 jQuery.fn.init 实例化出来的对象拥有 jQuery.fn 的方法和属性。 ```javascript jQuery.extend = jQuery.fn.extend = function() { // ... }; jQuery.extend({ // 一些静态方法和属性 }); jQuery.fn.extend({ // 一些实例方法和属性 }); ``` 这里定义了 jQuery 的 extend 方法,用于实现对象的合并。同时还定义了一些静态方法和属性,以及一些实例方法和属性。 ```javascript jQuery.expr = { // ... }; jQuery.expr[ ":" ] = { // ... }; ``` 这里定义了 jQuery 的表达式引擎,用于实现选择器的解析。其中,jQuery.expr 是一个对象,存储了所有的选择器类型。jQuery.expr[ ":" ] 表示的是伪类选择器。 ```javascript jQuery.ajax = function( url, options ) { // ... }; jQuery.fn.load = function( url, params, callback ) { // ... }; ``` 这里定义了 jQuery 的 ajax 和 load 方法,用于实现异步请求和载入 HTML 片段。 ```javascript var // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$; jQuery.noConflict = function( deep ) { // ... }; if ( typeof noGlobal === "undefined" ) { window.jQuery = window.$ = jQuery; } ``` 这里定义了 jQuery 的 noConflict 方法,用于解决命名冲突问题。同时还保存了 window.jQuery 和 window.$ 的引用,以便在需要时恢复原来的状态。最后,将 jQuery 和 $ 添加到全局对象 window 中。 以上是 jQuery 源码的部分逐行详解,希望能对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值