JavaEE中级.20190530.jQuery.初识jQuery.DOM对象和jQuery包装集对象.jQuery选择器.jQuery DOM操作.

一.初识jQuery

            jQuery 是一套兼容多浏览器的 javascript 脚本库. 核心理念是写得更少,做得更多,使用 jQuery 将极大的提高编写                   javascript 代码的效率,帮助开发者节省了大量的工作,让写出来的代码更加优雅, 更加健壮,“如虎添翼”. 同时网络上丰富

     的 jQuery 插件也让我们的工作变成了"有了 jQuery,一切 soeasy."--因为我们已经站在巨人的肩膀上了。

     1.jQuery 的下载和安装

             官网下载:http://jquery.com/   

                                  

               版本:1)完整版 : jquery-2.1.4.js -->学习版本(学习源码 想高手学习是最好学习方法)
                          2)压缩版 : jquery-2.1.4.min.js -->开发版本(压缩版,减少传输)

               安装:在页面引入即可

                         

     2.jQuery核心

               "$"符号在 jQuery 中代表对jQuery 对象的引用, "jQuery"是核心对象,通过该对象可以获取jQuery对象,调用jQuery

        提供的方法等。只有jQuery对象才能调用jQuery提供的方法。  $ 相当于就代替 jQuery。

        注:只有 jQuery 对象才能调用 jQuery 提供的方法。

     3.   Uncaught ReferenceError: $ is not defined 

            报错原因:
                  1.没有引入jquery文件
                  2.引入的jquery文件顺序不对

二、DOM对象和jQuery包装集对象

        1.Dom对象

                  javascript 中获取 Dom 对象,Dom 对象只有有限的属性和方法:

var div = document.getElementById("testDiv"); 
var divs = document.getElementsByTagName("div");

        2. jQuery 包装集|对象
                  可以说是 Dom 对象的扩充.在 jQuery 的世界中将所有的对象, 无论是一个还是一组, 都封装成一个 jQuery 包装集,

            比如获取包含一个元素的 jQuery 包装集:

var jQueryObject = $("#testDiv");

       3. Dom转jQuery对象
                 Dom对象转为jQuery对象,只需要利用$()方法进行包装即可

var domDiv = document.getElementById('mydiv'); // 获取Dom对象
mydiv = $(domDiv);

        4. jQuery对象转Dom对象
                 jQuery对象转Dom对象,只需要取数组中的元素即可

//第一种方式 获取jQuery对象 
var jqueryDiv = jQuery('#mydiv'); 
//第二种方式 获取jQuery对象 
jqueryDiv = $('#mydiv'); 
var dom = jqueryDiv[0];//将以获取的jquery对象转为dom

                通过遍历jQuery对象数组得到的对象是Dom对象,可以通过$()转为jQuery对象

$('#mydiv').each(function() {//遍历 
var jquery = $(this);
})

三.jQuery选择器

     1. 基础选择器 Basics(掌握即可)

          

           

            dom: innerHTML="....", innerText="....."
         jquery:  .html("..."),           .text("......")

     2. 层次选择器Hierarchy

            

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>陈层次选择器</title>
	</head>
	<body>
		<div style="border: solid 1px tan; ">伯伯</div>
		<div id="parent" style="border: solid 1px salmon; ">
			父亲
			<div>
				大哥
				<div> 大哥的儿子 </div>
				<p> 大哥的女儿</p>
			</div>
			<div>二哥</div>
			<div>
				三哥
				<p> 三哥的女儿 </p>
			</div>
			<div>我</div>
			<p>小妹</p>
		</div>
		<p style="border: solid 1px blanchedalmond; ">姑姑</p>
		<div style="border: solid 1px blueviolet; ">
			叔叔
		</div>
		<div style="border: solid 1px cyan; ">
			小叔
		</div>
	</body>
	
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		// 后代选择器 		ancestor descendant
		var houdai = $("#parent div");
		console.log(houdai);
		
		// 子代选择器 		parent > child
		var zidai = $("#parent > p");
		console.log(zidai);
		
		// 相邻选择器		prev + next  (1、只找当前元素的下一个同级 2、只找一个)
		var next = $("#parent + div");
		console.log(next);
		
		// 同辈选择器 		prev ~ sibling 
		var tb = $("#parent ~ div");
		console.log(tb);
		
	</script>
</html>

     3.过滤选择器

               :checked:得到所有checked为true的元素
               :eq(index):匹配指定下标的元素
               :gt(index):大于指定下标的
               :odd  获取所有的奇数位置的元素
               :even 获取所有的偶数位置的元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>表单选择器</title>
	</head>
	<body>
		<form id='myform' name="myform" method="post">
			<input type="hidden" name="uno" value="9999" disabled="disabled" /> 
			姓名: <input type="text" id="uname" name="uname" /><br /> 
			密码: <input type="password" id="upwd" name="upwd" value="123456" /><br /> 
			年龄: <input type="radio" name="uage" value="0" checked="checked" />小屁孩
				<input type="radio" name="uage" value="1" />你懂 得 <br /> 
			爱好:
			<input type="checkbox" name="ufav" value="篮球" checked="checked" />篮 球
			<input type="checkbox" name="ufav" value="爬床" />爬床
			<input type="checkbox" name="ufav" value="代码"   checked="checked" />代码<br /> 
			来自:
			<select id="ufrom" name="ufrom">
				<option value="-1" selected="selected">请选 择
				</option>
				<option value="0">北京</option>
				<option value="1">上海</option>
			</select><br /> 
			简介:
				<textarea rows="10" cols="30" name="uintro"></textarea><br /> 
			头像: <input type="file" /><br />
			<input type="image" src="http://www.baidu.com/img/bd_logo1.png" width="20" height="20" />
			<button type="submit" onclick="return checkForm();">提交 </button>
			<button type="reset">重置</button>
		</form>
	</body>
	
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	
	<script type="text/javascript">
		// 元素选择器
		var inputs = $("input");
		console.log(inputs.length);
		
		// 表单选择器
		var inps = $(":input");
		console.log(inps.length);
		
		// 获取所有的复选框
		var cks = $(":checkbox");
		console.log(cks);
		
		console.log($("input:checkbox"));
		/*
		 	过滤选择器
		 		:checked:得到所有checked为true的元素
		 		:eq(index):匹配指定下标的元素
		 		:gt(index):大于指定下标的
		 		
		 		:odd  获取所有的奇数位置的元素
		 		:even 获取所有的偶数位置的元素
		 
		 */
		var cked = $(":checked");
		console.log(cked);
		console.log($(":checkbox:checked"));
		
		var eq1 = $(":checkbox:eq(0)");
		console.log(eq1);
		
		var gt1 = $(":checkbox:gt(0)");
		console.log(gt1);
	</script>
</html>

四、jQuery DOM操作

              1. 操作元素的属性

                   1)获取属性

                  

                   2)设置属性

                   

                    3)移除属性

                    

                    4)attr()与prop()的区别:
                         共同点:都可以获取元素的属性
                         不同点:
                          ①attr()可以获取自定义属性和固有属性的值,而prop()只能获取固有属性的值 (固有属

                             性:元素本身就有的属性)
                          ②操作返回值是boolean类型的属性时,attr()返回的是对应的值,而prop()返回的是true和false
                        如何选择:
                          如果属性的返回值是boolean类型时,用prop()方法;  (checked、selected、disabled)
                          如果是非boolean类型,则使用attr()方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="checkbox" id="ck1" name="ch" checked="checked" aa="aabb"/> aa
		<input type="checkbox" id="ck2" name="ch" /> bb
	</body>
	
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		// 获取元素的属性 (固有属性)
		var name1 = $("#ck1").attr("name");
		console.log(name1);
		var name2 = $("#ck2").prop("name");
		console.log(name2);
		
		// 获取元素的属性 (自定义属性属性)
		var a1 = $("#ck1").attr("aa");
		var a2 = $("#ck1").prop("aa");
		console.log(a1,a2);
		
		// 获取元素的属性 (设置过属性且属性返回值是boolean类型)
		var c1 = $("#ck1").attr("checked");
		var c2 = $("#ck1").prop("checked");
		console.log(c1,c2);
		
		// 获取元素的属性 (未设置过属性且属性返回值是boolean类型)
		var c11 = $("#ck2").attr("checked");
		var c22 = $("#ck2").prop("checked");
		console.log(c11,c22);
		
		// 设置元素的属性值
		$("#ck1").attr("value","1");
		$("#ck2").prop("value","2");
		
		// attr()
		$("#ck1").attr("checked","checked");
		$("#ck2").prop("checked",true);
		
		// 移除属性
		$("#ck1").removeAttr("name");
		
	</script>
</html>

       2.操作元素的样式
          
            增加元素的具体样式,格式:
                1)css({‘样式名’:’样式值’,’样式名 2’:’样式值 2’})
                     例:css({"background-color":"red","color":"#fff"})2)css(“样式名”,”样式值”)
                     例:css('color','white')
                2)css(“样式名”,”样式值”)
                     例:css('color','white')
            attr():设置样式时,会重新设置class的属性值,所以会将原来的样式覆盖
            addClass():添加样式,原来的样式依然保留,如果出现了相同样式,以后定义的样式为准
            css():设置具体的样式(设置行内样式,写在style属性中的样式)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>操作元素的样式</title>
	<style type="text/css">
		div{
			 padding: 8px;
		 	 width: 180px;
		}
		.blue{
			background: blue;
		}
		.larger{
			font-size: 30px;
		}
		.green {
			background : green;
		}
		.red {
			background : red;
		}
	</style>
</head>
<body>

	<h3>css()方法设置元素样式</h3>
	<div id="conBlue" class="blue larger">天蓝色</div>
	<div id="conRed">大红色</div>
	<div id="remove" class="blue larger">天蓝色</div>
</body>
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		// 设置元素的class属性
		$("#conRed").attr("class","red");
		$("#conBlue").attr("class","green");
		
		// 给元素添加元素
		$("#conRed").addClass("larger");
		$("#conRed").addClass("green");
		
		// 设置具体的样式
		// 设置一个样式
		$("#remove").css("color","chartreuse");
		// 同时设置多个
		$("#remove").css({"font-weight":700,"height":"200px"});
		
		// 移除样式  (样式名)
		$("#conRed").removeClass("larger");
	</script>
</html>

       3.操作元素的内容
              
           1)比较html()和text()
                 html()可以识别数据中的html标签并 显示出来;
                 text()不识别html标签,会当做纯文本显示
                 取值时,html()能够获取到元素中的html代码,text()只会获取纯文本
                
                 表单元素:取值赋值使用 val()
                        文本框、密码框、单选框、复选框、下拉框、文本域、文件域、隐藏域、(按钮)等
                 非表单元素:取值赋值使用  html()和text()
                        div、span、p、a、h1-h6、table、tr、td、ul、li、ol、font、lable等

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>操作元素的内容</title>
	</head>
	<body>
		
		<h3><span>html()和 text()方法设置元素内容</span></h3>
		<div id="html"></div>
		<div id="text"></div>
		<input type="text" name="uname" id="uname" value="oop" />
		
	</body>
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		// 获取表单元素的值
		var uname = $("#uname").val();
		console.log(uname);
		// 设置表单元素的值
		$("#uname").val("今天天气不错");
		var uname2 = $("#uname").val();
		console.log(uname2);
		
		// html()  和  text()
		// 设置非表单元素的值
		$("#html").html("你好");
		$("#text").text("你好");
		
		$("#html").html("<h2>你好</h2>");
		$("#text").text("<h2>你好</h2>");
		
		// 获取元素的值
		var html = $("#html").html();
		var txt = $("#html").text();
		console.log(html);
		console.log(txt);
	
	</script>
</html>

       4. 创建元素

                  在jQuery中创建元素很简单,直接使用核心函数即可

$(‘元素内容’) 
$(‘<p>this is a paragraph!!!</p>’)

       5. 添加元素

               

               

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>创建元素、添加元素</title>
		<style type="text/css">
		div {
		  margin: 10px 0px;
		}
		span{
		  color: white;
		  padding: 8px
		}
		.red{
		  background-color: red;
		}
		.blue{
		  background-color: blue;
		}
		.green{
		  background-color: green;
		}
		.pink{
			background-color: pink;
		}
		.skyblue {
			background-color: skyblue;
		}
		</style>
	</head>
	<body>
		
		<h3>prepend()方法前追加内容</h3>
		<h3>prependTo()方法前追加内容</h3>
		<h3>append()方法后追加内容</h3>
		<h3>appendTo()方法后追加内容</h3>
		
		<span class="red">男神</span>
		<span class="red">不老男神</span>
		<span class="blue">偶像</span>
		<div class="green" id="person">
		 <span>小鲜肉</span>
		</div>
		
	</body>
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		/*创建元素*/
		var div = "<div>你好</div>";
		console.log(div);
		console.log($(div));
		
		/*添加元素*/
		// prepend()方法前追加内容
		$("#person").prepend("<span>小奶狗</span>");
		// prependTo()方法前追加内容
		$("<span>小狼狗</span>").prependTo($("#person"));
		
		// append()方法后追加内容
		$("#person").append("<span>舔狗</span>");
		// appendTo()方法后追加内容
		$("<span>老腊肉</span>").appendTo($("#person"));
		
		// 如果追加的元素是已存在的元素,则直接移动到指定元素中
		$("#person").append($(".red"));  
		
		// before() 
		$(".blue").before("<span class='pink'>女神</span>");
		
		// after()
		$(".blue").after("<span class='skyblue'>歌手</span>");
	</script>
</html>

     6.删除元素
                   方法                         说明
                remove()        删除所选元素或指定的子元素,包括整个标签和内容一起删。
                empty()          清空所选元素的内容
     7.遍历元素
                each()
                $(selector).each(function(index,element)) :遍历元素
                参数 function 为遍历时的回调函数,
                index 为遍历元素的序列号,从 0 开始。
                element 是当前的元素,此时是 dom 元素。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>删除元素、遍历元素</title>
		<style type="text/css">
		span{
		  color: white;
		  padding: 8px;
		  margin: 5px;
		  float: left;
		}
		.green{
		  background-color: green;
		}
		.blue{
		  background-color: blue;
		}
		.pink{
			background-color: pink;
		}
		</style>
	</head>
	<body>
		
		<h3>删除元素</h3>
		<span class="green">jquery<a>删除</a></span>
 		<span class="blue">javase</span>
 		<span class="green">http 协议</span>
 		<span class="blue">servlet</span>
 		
 		<br />
 		<hr />
 		<span class="pink">jquery</span>
		<span class="pink">javase</span>
		<span class="pink">http 协议</span>
		<span class="pink">servlet</span>
	</body>
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		// 删除元素
		$(".green").remove();
		// 清空元素
		$(".blue").empty();
		
		// $(selector).each(function(index,element)) :遍历元素
		/*$(".pink").each(function(){
			console.log(this);
			console.log(this.innerHTML);
			console.log($(this).html());
		});*/
		
		$(".pink").each(function(index,element){
			console.log(index);
			console.log(element);
			console.log($(element).html());
		});
		
	</script>
</html>

       8.ready()加载事件
                ready()类似于 onLoad()事件
                ready()可以写多个,按顺序执行
                $(document).ready(function(){})等价于$(function(){})
                
                ready()加载事件和onload加载事件:
                ready()加载事件在dom结构(htm标签)加载完毕后,就执行
                onload加载事件在dom结构(htm标签)及引入的外部资源(js文件、css文件等)加载完毕之后才执行

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>ready加载事件</title>
		<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			
			// JS
			window.onload = function() {
				console.log("js的预加载事件....");
			}
			
			// jquery
			$(document).ready(function(){
				console.log("jquery的预加载事件....");
				console.log($("#mydiv"));
			});
			
			$(function(){
				console.log("jquery的预加载事件2....");
			});
	
		</script>
	</head>
	<body>
		
		<div id="mydiv">
			预加载事件
		</div>
	</body>
	
	
</html>

       9.bind()绑定元素事件
            1)为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。
                         $(selector).bind( eventType [, eventData], handler(eventObject))
             2) eventType :是一个字符串类型的事件类型,就是你所需要绑定的事件。这类类型可以包括如下:
                                     blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick,mousedown, mouseup,                                                     mousemove, mouseover, mouseout, mouseenter, mouseleave,change, select, submit, keydown,                                                keypress, keyup, error [, eventData]:传递的参数,格式:{名:值,名 2:值 2}
             3) handler(eventObject):该事件触发执行的函数
             4) bind()绑定元素事件三要素:  
                    ①确定为哪些元素绑定事件
                        获取元素
                    ②绑定什么事件(事件类型)
                        第一个参数:事件的类型
                    ③相应事件触发的,执行的操作
                        第二个参数:函数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>绑定事件</title>
	</head>
	<body>
		
		姓名:<input type="text" id="uname" />
		密码:<input type="text" id="upwd" />
		<button id="btn1">按钮1</button>
	</body>
	
	<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		// js
		/*document.getElementById("btn1").onclick = function(){
			alert("这是一个点击事件");
		}*/
		
		// 得到按钮对象并绑定点击事件
		$("#btn1").bind("click",function(){
			alert("这是一个点击事件");
		});
		
		// 绑定多个事件
		// 得到要绑定事件的元素
		/*$("#uname").blur(function(){
			console.log("失去焦点了...");
		});
		$("#uname").focus(function(){
			console.log("聚焦...");
		});*/
		
		$("#uname").blur(function(){
			console.log("失去焦点了...");
		}).focus(function(){
			console.log("聚焦...");
		});
		
		// 了解
		// 给多个事件绑定同一函数
		/*$("#upwd").bind("blur focus",function(){
			console.log("....");
		});*/
		
		/*$("#upwd").bind("blur",function(){
			console.log("....");
		}).bind("focus",function(){
			console.log("。。。");
		});*/
		
		/*$("#upwd").bind({
			"blur":function(){
				console.log("失焦...");
			},
			"focus":function(){
				console.log("聚焦。。。");
			}
		});*/
			
	</script>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值