欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JQuery基础学习笔记

程序员文章站 2022-04-29 14:12:16
...

主要内容

  1. JQuery基础
    1. 概念
    2. 快速入门
    3. Jquery对象和JS对象的区别与转换
    4. 选择器
    5. DOM操作
    6. 案例

1. Jquery基础

  1. 概念
    • 一个javaScript框架,简化js开发
    • javaScript框架 :本质上是一些js文件,封装了js的原生代码而已
  2. 快速入门
    • 步骤
    1. 下载JQuery
      • 目前jQuery有三个大版本:
        1.x:兼容ie678,使用最为广泛的,官方只做BUG维护, 功能不再新增。因此一般项目来说,使用1.x版本就可以了,
        最终版本:1.12.4 (2016年5月20日)
        2.x:不兼容ie678,很少有人使用,官方只做BUG维护, 功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,
        最终版本:2.2.4 (2016年5月20日)
        3.x:不兼容ie678,只支持最新的浏览器。除非特殊要求, 一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。
        目前该版本是官方主要更新维护的版本。最新版本:3.2.1(2017年3月20日)
      • jquery-xxx.js和jquery-xxx.min.js文件的区别
        • jquery-xxx.js :开发版本,给程序员看的,有良好的缩进和注释。文件体积稍大些
        • jquery-xxx.min.js :生产版本,程序中使用,没有缩进。体积更小一些,程序加载更快
    2. 导入Jquery的js文件;导入min.js文件
    3. 使用 :本次学习使用的是最新的3.3.1版本的JQuery
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>JQuery快速入门</title>
        <script src="js/jquery-3.3.1.min.js"></script>
    </head>
    <body>
        <div id="div1">div1...</div>
        <div id="div2">div2...</div>
    
        <script>
            // 使用JQuery获取元素对象
            var div1 = $("#div1");
            var div2 = $("#div2");
    
            alert(div1.html())
            alert(div2.html())
        </script>
    </body>
    </html>
  1. Jquery对象和JS对象的区别与转换

    • 获取的所有元素对象可以当作数组来使用
    1. JQuery对象在操作时,更加方便
    2. js对象和JQuery对象的方法是不通用的
    3. 两者之间可以相互转换
      • js – > JQuery :$(js对象)
      • JQuery – > js : JQuery对象[索引] 或者 JQuery对象.get(索引)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>JQuery对象与js对象的转换</title>
        <script src="js/jquery-3.3.1.min.js"></script>
    </head>
    <body>
        <div id="div1">div1...</div>
        <div id="div2">div2...</div>
    
        <script>
           // 1.通过js方式获取名称叫做div的所有html元素对象
            var divs = document.getElementsByTagName("div");
            alert(divs);
    
            // 2.通过Jquery方式获取名称叫做div的所有html元素对象
            var $divs = $("div");
           alert($divs)
           /*
                获取的所有元素对象可以当作数组来使用
                1. JQuery对象在操作时,更加方便
                2. js对象和JQuery对象的方法是不通用的
                3. 两者之间可以相互转换
                    * js -- > JQuery :$(js对象)
                    * JQuery -- > js : JQuery对象[索引] 或者 JQuery对象.get(索引)
            */
           // JQuery的使用更加方便;改变中的内容
            // 1. 改变divs中的所有div为"bbb"
            for (var i=0; i<divs.length; i++){
                divs[i].innerHTML = "bbb";
            }
            // 2.改变$divs中的所有div为"ccc"
            $divs.html("ccc");
    
           // js对象和JQuery对象可以相互转换
            // 1.js --> JQuery
            $(divs[0]).html("ddd");
            // 2.JQuery --> js
            $divs[0].innerHTML = "eee";
            $divs.get(1).innerHTML = "fff";
    
        </script>
    </body>
    </html>
  1. 选择器
    • 用来删选具有相似特征的元素(标签)
    1. 基本语法
      • 事件绑定
      • 入口函数
      • 样式控制
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>选择器之基本语法</title>
        <script src="js/jquery-3.3.1.min.js"></script>
        <script>

                // 若将script写在head中,则此时事件直接绑定则不成功;
                // 因为事件的加载顺序不同,所以需要为script添加入口函数来避免此现象

                // 2.入口函数

                /*// js写法
                window.onload = function () {
                    // 1.事件绑定
        
                    // 给bt1按钮对象添加单击事件
                    $("#bt1").click(function () {
                        alert("你好");
                    })
                }*/

               /* // JQuery写法
                $(function () {
                    // 1.事件绑定
        
                    // 给bt1按钮对象添加单击事件
                    $("#bt1").click(function () {
                        alert("你好");
                    })
                });*/

                /*
                    js写法与JQuery写法的区别
                        window.onload 只能定义一次,如果定义多次,则后面的会将前面的覆盖
                         $(function () {}) 可以定义多次
                 */

               /* function fun1() {
                    alert("我是fun1");
                }
                function fun2() {
                    alert("我是fun2");
                }

                /!*window.onload = fun1;
                window.onload = fun2;   // 会覆盖上面的定义值*!/

                $(fun1);
                $(fun2);    //两次赋值都成功,没有被覆盖*/

               // 3.样式控制

                $(function () {
                   $("#div1").css("background-color", "red");
                   $("#div2").css("backgroundColor", "pink");
                });
            </script>
        </head>
        <body>
            <div id="div1">div1...</div>
            <div id="div2">div2...</div>
            <button id="bt1">我是按钮</button>
        
            <!--<script>
                // 1.事件绑定
        
                // 给bt1按钮对象添加单击事件
                $("#bt1").click(function () {
                    alert("你好");
                })
            </script>-->
        </body>
        </html>
  1. 选择器的分类
    • 基本选择器
      1. 标签选择器(元素选择器)
        • 语法: $(“html标签名”) 获得所有匹配标签名的元素
      2. id选择器
        • 语法: $("#id的属性值") 获得与指定id属性值匹配的元素
      3. 类选择器
        • 语法: $(".class的属性值") 获得与指定的class属性值匹配的元素
      4. 并集选择器
        • 语法: $(“选择器1,选择器2,…”) 获得多个选择器选中的所有元素
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <title>基本选择器</title>
            <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        	<script  src="../js/jquery-3.3.1.min.js"></script>
        	<style type="text/css">
        		 	div,span{
        			    width: 180px;
        			    height: 180px;
        			    margin: 20px;
        			    background: #9999CC;
        			    border: #000 1px solid;
        				float:left;
        			    font-size: 17px;
        			    font-family:Roman;
        			}
        			div .mini{
        			    width: 50px;
        			    height: 50px;
        			    background: #CC66FF;
        			    border: #000 1px solid;
        			    font-size: 12px;
        			    font-family:Roman;
        			}
        			div .mini01{
        			    width: 50px;
        			    height: 50px;
        			    background: #CC66FF;
        			    border: #000 1px solid;
        			    font-size: 12px;
        			    font-family:Roman;
        			}
        	 </style>
        	<script type="text/javascript">
        		//入口函数
        		$(function () {
        			// 选择器,选择相应元素,为相应按钮实现指定功能
        
        			// <input type="button" value="改变 id 为 one 的元素的背景色为 红色"  id="b1"/>
        			$("#b1").click(function () {
        				$("#one").css("backgroundColor","red");
        			});
        			// <input type="button" value=" 改变元素名为 <div> 的所有元素的背景色为 红色"  id="b2"/>
        			$("#b2").click(function () {
        				$("div").css("backgroundColor","pink");
        			});
        			// <input type="button" value=" 改变 class 为 mini 的所有元素的背景色为 红色"  id="b3"/>
        			$("#b3").click(function () {
        				$(".mini").css("backgroundColor","blue");
        			});
        			// <input type="button" value=" 改变所有的<span>元素和 id 为 two 的元素的背景色为红色"  id="b4"/>
        			$("#b4").click(function () {
        				$("#two,span").css("backgroundColor","red");
        			});
        		});
        	</script>
        </head>
        <body>
        		 <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
        		 <input type="button" value="改变 id 为 one 的元素的背景色为 红色"  id="b1"/>
        		 <input type="button" value=" 改变元素名为 <div> 的所有元素的背景色为 红色"  id="b2"/>
        		 <input type="button" value=" 改变 class 为 mini 的所有元素的背景色为 红色"  id="b3"/>
        		 <input type="button" value=" 改变所有的<span>元素和 id 为 two 的元素的背景色为红色"  id="b4"/>
        		 <h1>有一种奇迹叫坚持</h1>
        		 <h2>自信源于努力</h2>
        	   <div id="one">
        	    	 id为one       
        		 </div>
        		 <div id="two" class="mini" >
        	    	   id为two   class是 mini 
        		       <div  class="mini" >class是 mini</div>
        		 </div>
        		 <div class="one" >
        		 	    class是 one 
        		       <div  class="mini" >class是 mini</div>
        			   <div  class="mini" >class是 mini</div>
        		 </div>
        		 <div class="one" >
        		 	  class是 one 
        		       <div  class="mini01" >class是 mini01</div>
        			   <div  class="mini" >class是 mini</div>
        		</div>
        		<span class="spanone">class为spanone的span元素</span>
        		<span class="mini">class为mini的span元素</span>
        		<input type="text" value="zhang" id="username" name="username">
        	</body>
    </html>
  • 层级选择器
    1. 后代选择器 :A中所有的B都被选中
    * 语法: $("A B ") 选择A元素内部的所有B元素
    2. 子选择器 :只选中A中的下一级B元素
    * 语法: $("A > B ") 选择A元素内部的所有B子元素
    <script type="text/javascript">
		// 入口函数
		$(function () {
			// 层级选择器,为相应按钮添加相应点击事件,实现其功能
			// <input type="button" value=" 改变 <body> 内所有 <div> 的背景色为红色"  id="b1"/>
			$("#b1").click(function () {
				$("body div ").css("backgroundColor","red");
			});
			// <input type="button" value=" 改变 <body> 内子 <div> 的背景色为 红色"  id="b2"/>
			$("#b2").click(function () {
				$("body > div ").css("backgroundColor","blue");
			});
		});
	</script>
  • 属性选择器
    1. 属性名称选择器
      * 语法: $(“A[属性名]”) 包含指定属性的选择器
    2. 属性选择器
      * 语法: $(“A[属性名=‘值’]”) 包含指定属性等于指定值的选择器
      * 注意: 除了等于指定值,还有一下几个符号
      != 属性值不等于该值,或者没有该属性值
      ^= 属性值以该值开始
      $= 属性值以该值结束
      *= 属性值中包含该值
    3. 属性复合选择器
      * 语法: $(“A[属性名=‘值’][]…”) 包含多个属性条件的选择器
    <script type="text/javascript">
		// 入口函数
        $(function () {
            // 属性选择器
            //<input type="button" value=" 含有属性title 的div元素背景色为红色"  id="b1"/>
            $("#b1").click(function () {
            	$("div[title]").css("backgroundColor","red");
            });
            // <input type="button" value=" 属性title值等于test的div元素背景色为红色"  id="b2"/>
            $("#b2").click(function () {
            	$("div[title='test']").css("backgroundColor","red");
            });
            // <input type="button" value=" 属性title值不等于test的div元素(没有属性title的也将被选中)背景色为红色"  id="b3"/>
            $("#b3").click(function () {
            	$("div[title!='test']").css("backgroundColor","red");
            });
            // <input type="button" value=" 属性title值 以te开始 的div元素背景色为红色"  id="b4"/>
            $("#b4").click(function () {
            	$("div[title^='te']").css("backgroundColor","red");
            });
            // <input type="button" value=" 属性title值 以est结束 的div元素背景色为红色"  id="b5"/>
            $("#b5").click(function () {
            	$("div[title$='est']").css("backgroundColor","red");
            });
            // <input type="button" value="属性title值 含有es的div元素背景色为红色"  id="b6"/>
            $("#b6").click(function () {
            	$("div[title*='es']").css("backgroundColor","red");
            });
            // <input type="button" value="选取有属性id的div元素,然后在结果中选取属性title值含有“es”的 div 元素背景色为红色"  id="b7"/>
            $("#b7").click(function () {
            	$("div[id][title*='es']").css("backgroundColor","red");
            });
        });
	 </script>
  • 过滤选择器
    1. 首元素选择器
      * 语法: :first 获得选择的元素中第一个元素
    2. 尾元素选择器
      * 语法: :last 获得选择的元素中最后一个元素
    3. 非元素选择器
      * 语法: :not(selector) 不包括指定内容的元素
    4. 偶数选择器
      * 语法: :even 偶数,从0开始计数
    5. 奇数选择器
      * 语法: :odd 奇数,从0开始计数
    6. 等于索引选择器
      * 语法 :eq(index) 指定索引元素
    7. 大于索引选择器
      * 语法 :gt(index) 大于指定索引元素
    8. 小于索引选择器
      * 语法 :lt(index) 小于指定索引元素
    9. 标题选择器
      * 语法 :header 获得标题(h1~h6)元素,固定写法
      注意 前面的8种选择器均需要在冒号前指定元素的类型,而标题选择器不需要指定
    <script type="text/javascript">
        // 入口函数
        $(function () {
            // 过滤选择器
            // <input type="button" value=" 改变第一个 div 元素的背景色为 红色"  id="b1"/>
            $("#b1").click(function () {
            	$("div:first").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变最后一个 div 元素的背景色为 红色"  id="b2"/>
            $("#b2").click(function () {
            	$("div:last").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变class不为 one 的所有 div 元素的背景色为 红色"  id="b3"/>
            $("#b3").click(function () {
            	$("div:not(.one)").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变索引值为偶数的 div 元素的背景色为 红色"  id="b4"/>
            $("#b4").click(function () {
            	$("div:even").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变索引值为奇数的 div 元素的背景色为 红色"  id="b5"/>
            $("#b5").click(function () {
            	$("div:odd").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变索引值为大于 3 的 div 元素的背景色为 红色"  id="b6"/>
            $("#b6").click(function () {
            	$("div:gt(3)").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变索引值为等于 3 的 div 元素的背景色为 红色"  id="b7"/>
            $("#b7").click(function () {
            	$("div:eq(3)").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变索引值为小于 3 的 div 元素的背景色为 红色"  id="b8"/>
            $("#b8").click(function () {
            	$("div:lt(3)").css("backgroundColor","red");
            });
            // <input type="button" value=" 改变所有的标题元素的背景色为 红色"  id="b9"/>
            $("#b9").click(function () {
            	$(":header").css("backgroundColor","red");
            });
        });
	</script>
  • 表单过滤选择器
    1. 可用元素选择器
    * 语法: :enabled 获得可用元素
    2. 不可用元素选择器
    * 语法: :disabled 获得不可用元素
    3. 选中选择器
    * 语法: :checked 获得单选/复选框选中的元素
    4. 选中选择器
    * 语法: :selected 获得下拉框选中的元素
    * 注意 以上4个选择器中的冒号前均需要填写表单中的元素
    <script type="text/javascript">
		// 入口函数
		$(function () {
			//表单过滤选择器

			// <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内可用 <input> 元素的值"  id="b1"/>
			// 选择文本输入框元素
			$("#b1").click(function () {
				$("input[type=text]:enabled").val("更改可用文本框的值");
			});
			// <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内不可用 <input> 元素的值"  id="b2"/>
			$("#b2").click(function () {
				$("input[type=text]:disabled").val("更改不可用文本框的值");
			});
			// <input type="button" value=" 利用 jQuery 对象的 length 属性获取复选框选中的个数"  id="b3"/>
			$("#b3").click(function () {
				alert($("input[type=checkbox]:checked").length);
			});
			// <input type="button" value=" 利用 jQuery 对象的 length 属性获取下拉框选中的个数"  id="b4"/>
			$("#b4").click(function () {
				alert($("#job > option:selected").length);
			});
		});
	</script>

上述选择器的学习,主要是选中指定的元素,然后能够对选中的元素进行一些操作;接下来我们便学习一些重要的操作,DOM操作
5. DOM操作(文档操作)

  1. 内容操作
    • html() :获取/设置元素的标签体内容,如<a><font>内容</font></a>;操作后 --> <font>内容</font>
    • text() :获取/设置元素的标签体纯文本内容,如<a><font>内容</font></a>;操作后 --> 内容
    • val() :获取/设置元素的value属性值
  • 不论是html()还是text(),若修改标签体内容,则除了最外层标签体不变,里面内容全部被修改。
<script>
			// 入口函数
			$(function () {
				//内容操作

				// 获取myinput 的value值
				// var value = $("#myinput").val();
				// alert(value);
				// $("#myinput").val("李四");

				// 获取mydiv的标签体内容
				// 	var html = $("#mydiv").html();
				// 	alert(html);
				// $("#mydiv").html("<h4>获取/设置标签体内容用html方法</h4>");

				// 获取mydiv文本内容
				// var text = $("#mydiv").text();
				// alert(text);
				$("#mydiv").text("纯文本内容");
			});

		</script>
  1. 属性操作
    1. 通用属性操作
      • attr() : 获取/设置元素的属性
      • removeAttr() :删除属性
      • prop() : 获取/设置元素的属性
      • removeProp() :删除属性
        attr和prop的区别
        • 如果操作的是元素的固有属性,则建议使用prop()
        • 如果操作的是元素自定义的属性,则建议使用attr()
          如何判断是否为固有属性?可查看w3cSchool文档,在标签中列出来的属性均是固有属性
    <script type="text/javascript">
		//入口函数
		$(function () {
			//通用属性操作
			//获取北京节点的name属性值;查看w3cSchool文档知li标签中name不是固有属性,故使用attr()
			var name = $("#bj").attr("name");
			// alert(name);
			//设置北京节点的name属性的值为dabeijing
			$("#bj").attr("name","dabeijing");
			//新增北京节点的discription属性 属性值是didu
			$("#bj").attr("discription","didu");
			//删除北京节点的name属性并检验name属性是否存在
			$("#bj").removeAttr("name");
			//获得hobby的的选中状态,查看w3cSchool文档知input标签中checked标签标识是否选中,是固有属性
			var checked = $("#hobby").prop("checked");
			alert(checked);
		});
	</script>
  1. 对class属性的操作
    • addClass() :添加class属性值
    • removeClass() :删除class属性值
    • toggleClass() :切换class属性值
      如何切换?
      • toggleClass(“one”) 先判断元素对象上是否存在class=“one”;如果存在就删除这个类;若不存在,则添加这个类。
    • css():也可以操作class的样式
    <script type="text/javascript">
		//入口函数
		$(function () {
			//class属性操作

			//<input type="button" value="采用属性增加样式(改变id=one的样式)"  id="b1"/>
			$("#b1").click(function () {
				$("#one").prop("class","second");
			});
			//<input type="button" value=" 使用addClass方法完成按钮1的功能"  id="b2"/>
			$("#b2").click(function () {
				$("#one").addClass("second");
			});
			//<input type="button" value="removeClass"  id="b3"/>
			$("#b3").click(function () {
				$("#one").removeClass("second");
			});
			//<input type="button" value=" 切换样式"  id="b4"/>
			$("#b4").click(function () {
				$("#one").toggleClass("second");
			});
			//<input type="button" value=" 通过css()获得id为one背景颜色"  id="b5"/>
			$("#b5").click(function () {
				var backgroundColor = $("#one").css("backgroundColor");
				alert(backgroundColor);
			});
			//<input type="button" value=" 通过css()设置id为one背景颜色为绿色"  id="b6"/>
			$("#b6").click(function () {
				$("#one").css("backgroundColor","green");
			});
		});
	</script>
  1. CRUD操作
    1. append() :父元素将子元素追加到末尾

      • 对象1.append(对象2) 将对象2添加到对象1内部,并在末尾
    2. prepend() :父元素将子元素追加到前面

      • 对象1.prepend(对象2) 将对象2添加到对象1内部,并在前面
    3. appendTo() :反向追加到末尾

      • 对象1.appendTo(对象2) 将对象1添加到对象2内部,并在末尾
    4. prependTo() :反向追加到前面

      • 对象1.prependTo(对象2) 将对象1添加到对象2内部,并在前面
    5. after() :添加元素到元素后面

      • 对象1.after(对象2) 将对象2添加到对象1后面,对象1与对象2是兄弟关系
    6. before() :添加元素到元素前面

      • 对象1.before(对象2) 将对象2添加到对象1前面,对象1与对象2是兄弟关系
    7. insertAfter() :反向添加元素到元素后面

      • 对象1.insertAfter(对象2) 将对象1添加到对象2后面,对象1与对象2是兄弟关系
    8. insertBefore() :反向添加元素到元素前面

      • 对象1.insertBefore(对象2) 将对象1添加到对象2前面,对象1与对象2是兄弟关系
    <script type="text/javascript">
		 //入口函数
		 $(function () {
			 // CRUD的移位操作

			 // <input type="button" value="将反恐放置到city的后面"  id="b1"/>反恐与city并非兄弟关系,所以不能使用after
			 $("#b1").click(function () {
				 //append
				 $("#city").append($("#fk"));
				 //appendTo
				 // $("#fk").appendTo($("#city"));
			 });
			 // <input type="button" value="将反恐放置到city的最前面"  id="b2"/>
			 $("#b2").click(function () {
				 //prepend
				 // $("#city").prepend($("#fk"));
				 //prependTo
				 $("#fk").prependTo($("#city"));
			 });
			 // <input type="button" value="将反恐插入到天津后面"  id="b3"/>反恐与天津是兄弟关系,所以使用after
			 $("#b3").click(function () {
				 //after
				 $("#tj").after($("#fk"));
				 //insertAfter
				 // $("#fk").insertAfter($("#tj"));
			 });
			 // <input type="button" value="将反恐插入到天津前面"  id="b4"/>
			 $("#b4").click(function () {
				 //before
				 // $("#tj").before($("#fk"));
				 //insertBefore
				 $("#fk").insertBefore($("#tj"));
			 });
		 });
	</script>
  1. remove() :移除元素
    * 对象.remove() :将对象删除掉
  2. empty() :清空元素的所有后代元素
    * 对象.empty() :将对象的后代元素全部清空,但是保留当前对象及其属性节点
    <script type="text/javascript">
		// 入口函数
		$(function () {
			// CRUD的删除操作
			// <input type="button" value="删除<li id='bj' name='beijing'>北京</li>"  id="b1"/>
			$("#b1").click(function () {
				$("#bj").remove();
			});
			// <input type="button" value="删除city所有的li节点   清空元素中的所有后代节点(不包含属性节点)"  id="b2"/>
			$("#b2").click(function () {
				$("#city").empty();
			});
		});
	</script>
  1. 案例