jQuery

1、jQuery介绍

什么是jQuery?

jQuery,就是JavaScript和查询(Query),是辅助JavaScript开发的js类库。

jQuery核心思想!!!

它的核心思想是weite less、do more(写得更少、做得更多),所以实现了很多浏览器的兼容问题。

jQuery好处!!!

免费、开源、语法设计可以使开发更加便捷,假如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。


2、jQuery简单使用

1)使用$()代替window.onload

2)使用选择器获取dom对象,随后进行绑定,注意要使用 #

举例代码如下:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
	<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
	<script type="text/javascript">
		//方式一:
		/*window.οnlοad=function (){
			var btnobj=document.getElementById("btnId");
			btnobj.οnclick=function (){	// 动态绑定
				alert(btnobj.innerText);
			}
		}*/

		//方式二:
		$(function (){ //表示页面加载完成,相当于window.οnlοad=function (){}
			var $btnobj = $("#btnId"); //表示按id查询标签对象,注意要加#号
			$btnobj.click(function () { //绑定单击事件
				alert("jQuery的单击事件");
			});
		});

		/*//使用$()代替window.onload
		$(function(){
			//使用选择器获取按钮对象,随后绑定单击响应函数
			$("#btnId").click(function(){
				//弹出Hello
				alert('Hello');
			});
		});*/
		
	</script>
</head>
<body>
	<button id="btnId">SayHello</button>
</body>

3)常见的问题

① 使用jQuery一定要引入jQuery库吗?

是的

② jQuery中的$是什么?

是一个函数

③ 怎么为按钮添加点击响应函数的?

1.使用jQuery查询到标签对象
2.使用标签对象.click(function(){});


3、jQuery核心函数

$是jQuery的核心函数,能完成jQuery的很多功能。$()就是调用$这个函数。

1)传入参数为函数时:$(function (){};

表示页面加载完成之后。相当于window.onload=function(){}
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
	//传入参数为[函数]时:在文档加载完成后执行这个函数
	$(function (){
        alert("页面加载完成");
	};
</script>

2)传入参数为HTML字符串时:

会创建这个html标签对象(元素结点对象)
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">

    $(function (){
        //传入参数为[HTML字符串]时:根据这个字符串创建元素节点对象
        $("<div>\n" +
            "    <span>div-span1</span>\n" +
            "    <span>div-span2</span>\n" +
            "</div>").appendTo("body");
    });
</script>

3)传入参数为选择器字符串时:

根据这个字符串查找元素节点对象
$("#(id属性值)");		id选择器,根据id查询标签对象
$("标签名");				标签名选择器,根据标签名查询标签对象
$(".class属性值");		类型选择器,可以根据class属性查询标签对象
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">

    //核心函数的4个作用
    //传入参数为[函数]时:在文档加载完成后执行这个函数
    $(function (){
        alert("页面加载完成");
        //传入参数为[HTML字符串]时:根据这个字符串创建元素节点对象
         $("<div>\n" +
            "    <span>div-span1</span>\n" +
            "    <span>div-span2</span>\n" +
            "</div>").appendTo("body");

        //传入参数为[选择器字符串]时:根据这个字符串查找元素节点对象
        alert($("button").length);
        //传入参数为[DOM对象]时:将DOM对象包装为jQuery对象返回
    });

</script>
</head>
<body>
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
</body>

4)传入参数为DOM对象时:

会把DOM包装为jQuery对象返回
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">

    //核心函数的4个作用
    //传入参数为[函数]时:在文档加载完成后执行这个函数
    $(function (){
        alert("页面加载完成");
        //传入参数为[HTML字符串]时:根据这个字符串创建元素节点对象
         $("<div>\n" +
            "    <span>div-span1</span>\n" +
            "    <span>div-span2</span>\n" +
            "</div>").appendTo("body");

        //传入参数为[选择器字符串]时:根据这个字符串查找元素节点对象
        alert($("button").length);
        //传入参数为[DOM对象]时:将DOM对象包装为jQuery对象返回
        var btnobj=document.getElementById("btn01");
        alert($(btnobj));
    });

</script>
</head>
<body>
    <button id="btn01">按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
</body>


4、jQuery对象和DOM对象区别

4.1 什么是jQuery对象,什么是DOM对象

DOM对象

① 通过getElementById()查询出来的标签对象是Dom对象

② 通过getElementsByName()查询出来的标签对象是Dom对象

③ 通过getElementsByTagName()查询出来的标签对象是Dom对象

④ 通过createElement()方法创建的对象,是Dom对象


jQuery对象

① 通过jQuery提供的API创建的对象,是jQuery对象

alert($("<h1></h1>"));

② 通过jQuery包装的Dom对象,也是jQuery对象

var btnobj =document.getElementById("btn01");
alert($(btnobj));

③ 通过jQuery提供的API查询到的对象,是jQuery对象

alert($("#btn01"));   //根据button标签的id="#btn01"查询
alert($("button"));   //根据button标签查询

4.2 jQuery对象的本质是什么?

jQuery对象是Dom对象组成的数组 + jQuery提供的一系列功能函数

<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">

	$(function(){
		//testDiv.css("color","red")
		//testDiv.style.color = "blue";

		var arr=[12,"abc",true];

		var $btns=$("button");

		for (var i=0;i<$btns.length;i++){
			alert($btns[i]);  //[object HTMLButtonElement]
		}
	});
</script>

4.3 jQuery对象和Dom对象使用的区别

jQuery对象不能使用DOM对象的属性和方法;DOM对象也不能使用jQuery对象的属性和方法。

4.4 jQuery对象和Dom对象相互转换

1)dom对象转换为jQuery对象重点

① 先得到DOM对象
② $(DOM对象) 	就可以转换为jQuery对象

2)jQuery对象转为dom对象重点

① 先有jQuery对象
② jQuery对象[下标]	取出相应的DOM对象

在这里插入图片描述

alert($(document.getElementById("testDiv"))[0]);


5、jQuery选择器(重点

5.1 基本选择器(重点

在这里插入图片描述

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			div, span, p {
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}
			
			div.mini {
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}
			
			div.hide {
			    display: none;
			}
		</style>
		<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
		<script type="text/javascript">

			//1.选择 id 为 one 的元素 "background-color","#bbffaa"
				$(function (){
					$("#btn1").click(function (){
						//css()方法可以设置获取样式
						$("#one").css("background-color","#bbffaa");
					});

					//2.选择 class 为 mini 的所有元素
					//css()方法可以设置获取样式
					$("#btn2").click(function (){
						$(".mini").css("background-color","#bbffaa");
					});

					//3.选择 元素名是 div 的所有元素
					$(function () {
						$("#btn3").click(function () {
							//css()方法可以设置获取样式
							$("div").css("background-color", "#bbffaa");
						});
					});

					//4.选择所有的元素
					$(function () {
						$("#btn4").click(function () {
							$("*").css("background-color", "#bbffaa");
						});
					});

					//5.选择所有的 span 元素和id为two的元素 ---用到组合选择器
					$(function () {
						$("#btn5").click(function () {
							$("#two,span").css("background-color", "#bbffaa");
						});
					});

				});
		</script>
	</head>
	<body>
<!-- 	<div>
		<h1>基本选择器</h1>
	</div>	 -->	
		<input type="button" value="选择 id 为 one 的元素" id="btn1" />
		<input type="button" value="选择 class 为 mini 的所有元素" id="btn2" />
		<input type="button" value="选择 元素名是 div 的所有元素" id="btn3" />
		<input type="button" value="选择 所有的元素" id="btn4" />
		<input type="button" value="选择 所有的 span 元素和id为two的元素" id="btn5" />
		
		<br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<span class="one" id="span">^^span元素^^</span>
	</body>
</html>

5.2 层级选择器(重点

ancestor descendant- - -在给定的祖先元素下匹配所有的后代元素

需求:找到表单(from)中所有的 input 元素

HTML 代码:
<form>								//祖先元素
  <label>Name:</label>
  <input name="name" />				//后代元素
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />	//后代元素
 </fieldset>
</form>
<input name="none" />

jQuery 代码:
$("form input")

结果:
[ <input name="name" />, <input name="newsletter" /> ]

parent > child- - -在给定的父元素下匹配所有的子元素直接的父子关系-不涉及跨代

需求:匹配表单中所有的子级input元素。

HTML 代码:
<form>								//父元素
  <label>Name:</label>
  <input name="name" />				//子元素
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />  //孙子元素
 </fieldset>
</form>
<input name="none" />

jQuery 代码:
$("form > input")

结果:
[ <input name="name" /> ]

prev + next- - -匹配所有紧接在 prev 元素后的 next 元素 (next,一个有效选择器并且紧接着第一个选择器也要是同级

需求:匹配所有跟在 label 后面的 input 元素

HTML 代码:
<form>
  <label>Name:</label>				//第一个prev元素
  <input name="name" />				//第一个next元素
  <fieldset>
      <label>Newsletter:</label>	//第二个prev元素
      <input name="newsletter" />	//第二个next元素
 </fieldset>
</form>
<input name="none" />

jQuery 代码:
$("label + input")

结果:
[ <input name="name" />, <input name="newsletter" /> ]

prev ~ siblings- - -匹配 prev 元素之后的所有 siblings 元素siblings一个选择器,并且它作为第一个选择器的同级

需求:找到所有与表单(from)同辈的 input 元素

HTML 代码:
<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
 </fieldset>
</form>
<input name="none" />

jQuery 代码:
$("form ~ input")

结果:
[ <input name="none" /> ]

5.3 过滤选择器

1)基本过滤器
在这里插入图片描述

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			div, span, p {
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}
			
			div.mini {
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}
			
			div.hide {
			    display: none;
			}			
		</style>
		<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){  //执行动画
				function anmateIt(){
					$("#mover").slideToggle("slow", anmateIt);
				}
				anmateIt();
			});
			
			$(document).ready(function(){
				//1.选择第一个 div 元素  
				$("#btn1").click(function(){
					$("div:first").css("background", "#bbffaa");
				});

				//2.选择最后一个 div 元素
				$("#btn2").click(function(){
					$("div:last").css("background", "#bbffaa");
				});

				//3.选择class不为 one 的所有 div 元素
				$("#btn3").click(function(){
					$("div:not(.one)").css("background", "#bbffaa");
				});

				//4.选择索引值为偶数的 div 元素
				$("#btn4").click(function(){
					$("div:even").css("background", "#bbffaa");
				});

				//5.选择索引值为奇数的 div 元素
				$("#btn5").click(function(){
					$("div:odd").css("background", "#bbffaa");
				});

				//6.选择索引值为大于 3 的 div 元素
				$("#btn6").click(function(){
					$("div:gt(3)").css("background", "#bbffaa");
				});

				//7.选择索引值为等于 3 的 div 元素
				$("#btn7").click(function(){
					$("div:eq(3)").css("background", "#bbffaa");
				});

				//8.选择索引值为小于 3 的 div 元素
				$("#btn8").click(function(){
					$("div:lt(3)").css("background", "#bbffaa");
				});

				//9.选择所有的标题元素
				$("#btn9").click(function(){
					$(":header").css("background", "#bbffaa");
				});

				//10.选择当前正在执行动画的所有元素
				$("#btn10").click(function(){
					$(":animated").css("background", "#bbffaa");
				});

				//11.选择没有执行动画的最后一个div
				$("#btn11").click(function(){
					$("div:not(:animated):last").css("background", "#bbffaa");
				});
			});
		</script>
	</head>
	<body>
		<input type="button" value="选择第一个 div 元素" id="btn1" />
		<input type="button" value="选择最后一个 div 元素" id="btn2" />
		<input type="button" value="选择class不为 one 的所有 div 元素" id="btn3" />
		<input type="button" value="选择索引值为偶数的 div 元素" id="btn4" />
		<input type="button" value="选择索引值为奇数的 div 元素" id="btn5" />
		<input type="button" value="选择索引值为大于 3 的 div 元素" id="btn6" />
		<input type="button" value="选择索引值为等于 3 的 div 元素" id="btn7" />
		<input type="button" value="选择索引值为小于 3 的 div 元素" id="btn8" />
		<input type="button" value="选择所有的标题元素" id="btn9" />
		<input type="button" value="选择当前正在执行动画的所有元素" id="btn10" />		
		<input type="button" value="选择没有执行动画的最后一个div" id="btn11" />
		
		<h3>基本选择器.</h3>
		<br><br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<div id="mover">正在执行动画的div元素.</div>
	</body>
</html>

2) 内容过滤选择器

① :contains(text)		匹配包含给定文本的元素,其中text是一个用于查找的字符串
② :empty				匹配所有不包含子元素或者文本的空元素
③ :has(selector)		匹配含有选择器所匹配的元素的元素,其中Selector是一个用于筛选的选择器
④ :parent				匹配含有子元素或者文本的元素
		<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){ 	//执行动画
				function anmateIt(){
					$("#mover").slideToggle("slow", anmateIt);
				}
	
				anmateIt();				
			});
			
			
			$(document).ready(function(){
				//1.选择 含有文本 'di' 的 div 元素
				$("#btn1").click(function(){
					$("div:contains(di)").css("background", "#bbffaa");
				});

				//2.选择不包含子元素(或者文本元素) 的 div 空元素
				$("#btn2").click(function(){
					$("div:empty").css("background", "#bbffaa");
				});

				//3.选择含有 class 为 mini 元素的 div 元素
				$("#btn3").click(function(){
					$("div:has(.mini)").css("background", "#bbffaa");
				});

				//4.选择含有子元素(或者文本元素)的div元素
				$("#btn4").click(function(){
					$("div:parent").css("background", "#bbffaa");
				});
			});
		</script>

3) 可见性过滤选择器

:hidden- - -匹配所有不可见元素,或者type为hidden的元素

需求1:查找隐藏的 tr

HTML 代码:
<table>
  <tr style="display:none"><td>Value 1</td></tr> //style="display:none"表示隐藏
  <tr><td>Value 2</td></tr>
</table>

jQuery 代码:
$("tr:hidden")

结果:
[ <tr style="display:none"><td>Value 1</td></tr> ]

需求2:匹配type为hidden的元素

HTML 代码:
<form>
  <input type="text" name="email" />
  <input type="hidden" name="id" />
</form>

jQuery 代码:
$("input:hidden")

结果:
[ <input type="hidden" name="id" /> ]

:visible- - -匹配所有的可见元素

需求:查找所有可见的 tr 元素

HTML 代码:
<table>
  <tr style="display:none"><td>Value 1</td></tr>
  <tr><td>Value 2</td></tr>
</table>

jQuery 代码:
$("tr:visible")

结果:
[ <tr><td>Value 2</td></tr> ]

4) 属性过滤选择器^、$与正则表达式中含义相同
在这里插入图片描述

<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">	
	$(function() {
		//1.选取含有 属性title 的div元素
		$("#btn1").click(function() {
			$("div[title]").css("background", "#bbffaa");
		});
		//2.选取 属性title值等于'test'的div元素
		$("#btn2").click(function() {
			$("div[title='test']").css("background", "#bbffaa");
		});
		//3.选取 属性title值不等于'test'的div元素(*没有属性title的也将被选中)
		$("#btn3").click(function() {
			$("div[title!='test']").css("background", "#bbffaa");
		});
		//4.选取 属性title值 以'te'开始 的div元素
		$("#btn4").click(function() {
			$("div[title^='te']").css("background", "#bbffaa");
		});
		//5.选取 属性title值 以'est'结束 的div元素
		$("#btn5").click(function() {
			$("div[title$='est']").css("background", "#bbffaa");
		});
		//6.选取 属性title值 含有'es'的div元素
		$("#btn6").click(function() {
			$("div[title*='es']").css("background", "#bbffaa");
		});
		
		//7.首先选取有属性id的div元素,然后在结果中 选取属性title值 含有'es'的 div 元素
		$("#btn7").click(function() {
			$("div[id][title*='es']").css("background", "#bbffaa");
		});
		//8.选取 含有 title 属性值, 且title 属性值不等于 test 的 div 元素
		$("#btn8").click(function() {  //与3不同,3中属性值不为title的也会被选中
			$("div[title][title!='test']").css("background", "#bbffaa");
		});
	});
</script>

5) 表单和表单对象属性过滤选择器只对表单form进行操作

表单:
	:input 			//匹配所有 input, textarea, select 和 button 元素
	:text 			//匹配所有的单行文本框
	:password 		//匹配所有密码框
	:radio 			//匹配所有单选按钮
	:checkbox 		//匹配所有复选框
	:submit 		//匹配所有提交按钮
	:image 			//匹配所有图像域
	:reset 			//匹配所有重置按钮
	:button 		//匹配所有按钮
	:file 			//匹配所有文件域
	:hidden 		//匹配所有不可见元素,或者type为hidden的元素
	
表单对象的属性
	:enabled 		//匹配所有可用元素
	:disabled 		//匹配所有不可用元素
	:checked 		//匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)
	:selected 		//匹配所有选中的option元素
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">	
		$(function(){
				//1.对表单内 可用input 赋值操作
				$("#btn1").click(function(){
					//val可以操作表单项的value属性值
					//可以设置和获取
					$(":text:enabled").val("Good");
				});
				//2.对表单内 不可用input 赋值操作
				$("#btn2").click(function(){
					$(":text:disabled").val("VeryGood");
				});
				//3.获取多选框选中的个数  使用size()方法获取选取到的元素集合的元素个数
				$("#btn3").click(function(){
					alert($(":checkbox:checked").length);
				});
				//4.获取多选框,每个选中的value值
				$("#btn4").click(function(){

					//1、获取全部选中的复选框标签对象
					var $checkboies=$(":checkbox:checked");
					//遍历方式一:
					/*//2、遍历获取dom对象并输出其value值
					for (var i=0;i<$checkboies.length;i++){
						alert($checkboies[i].value);
					}*/

					//遍历方式二:each由jQuery对象提供用来遍历元素
					//在遍历的function函数中,由一个this对象,
					// 						this对象,就是当前遍历到的dom对象
					$checkboies.each(function (){
						alert(this.value);

					});

				});
				//5.获取下拉框选中的内容  
				$("#btn5").click(function(){
					var $checkedSelected=$("select option:selected");
					$checkedSelected.each(function (){
						alert(this.value);
					})
				});
	});
</script>


6、jQuery元素筛选- - 有过滤、查找、串联

在这里插入图片描述
在这里插入图片描述

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>DOM查询</title>
		<style type="text/css">
			div, span, p {
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}
			
			div.mini {
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}
			
			div.hide {
			    display: none;
			}			
		</style>
		<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
		<script type="text/javascript">
		
			$(document).ready(function(){
				function anmateIt(){
					$("#mover").slideToggle("slow", anmateIt);
				}
				anmateIt();

	
				//(1)eq()  选择索引值为等于 3 的 div 元素
				$("#btn1").click(function(){
					$("div").eq(3).css("background-color","#bfa");
				});
				//(2)first()选择第一个 div 元素
				 $("#btn2").click(function(){
					 //first()   选取第一个元素
					$("div").first().css("background-color","#bfa");
				});
				//(3)last()选择最后一个 div 元素
				$("#btn3").click(function(){
					//last()  选取最后一个元素
					$("div").last().css("background-color","#bfa");
				});
				//(4)filter()在div中选择索引为偶数的
				$("#btn4").click(function(){
					//filter()  过滤   传入的是选择器字符串
					$("div").filter(":even").css("background-color","#bfa");
				});
				 //(5)is()判断#one是否为:empty或:parent
				//is用来检测jq对象是否符合指定的选择器
				$("#btn5").click(function(){
					alert($("one").is(":empty"));
				});
				
				//(6)has()选择div中包含.mini的
				$("#btn6").click(function(){
					//has(selector)  选择器字符串    是否包含selector
					$("div").has(".mini").css("background-color","#bfa");
				});
				//(7)not()选择div中class不为one的
				$("#btn7").click(function(){
					//not(selector)  选择不是selector的元素
					$("div").not(".one").css("background-color","#bfa");
				});
				//(8)children()在body中选择所有class为one的div子元素
				$("#btn8").click(function(){
					//children()  选出所有的子元素
					$("body").children("div.one").css("background-color","#bfa");
				});
							
				//(9)find()在body中选择所有class为mini的div元素
				$("#btn9").click(function(){
					//find()  选出所有的后代元素
					$("body").find("div.mini").css("background-color","#bfa");
				});
				//(10)next() #one的下一个div
				$("#btn10").click(function(){
					//next()  选择下一个兄弟元素
					$("#one").next("div").css("background-color","#bfa");
				});
				//(11)nextAll() #one后面所有的span元素
				$("#btn11").click(function(){
					//nextAll()   选出后面所有的元素
					$("#one").nextAll("span").css("background-color","#bfa");
				});
				//(12)nextUntil() #one和span之间的元素
				$("#btn12").click(function(){
					//
					$("#one").nextUntil("span").css("background-color","#bfa")
				});
				//(13)parent() .mini的父元素
				$("#btn13").click(function(){
					$(".mini").parent().css("background-color","#bfa");
				});
				//(14)prev() #two的上一个div
				$("#btn14").click(function(){
					//prev()  
					$("#two").prev("div").css("background-color","#bfa")
				});
				//(15)prevAll() span前面所有的div
				$("#btn15").click(function(){
					//prevAll()   选出前面所有的元素
					$("span").prevAll("div").css("background-color","#bfa")
				});
				//(16)prevUntil() span向前直到#one的元素
				$("#btn16").click(function(){
					//prevUntil(exp)   找到之前所有的兄弟元素直到找到exp停止
					$("span").prevUntil("#one").css("background-color","#bfa")
				});
				//(17)siblings() #two的所有兄弟元素
				$("#btn17").click(function(){
					//siblings()    找到所有的兄弟元素,包括前面的和后面的
					$("#two").siblings("div").css("background-color","#bfa")
				});
							
				//(18)add()选择所有的 span 元素和id为two的元素
				$("#btn18").click(function(){
	
					//   $("span,#two,.mini,#one")
					$("span").add("#two").css("background-color","#bfa");
					
				});
			});
					
		</script>
	</head>
	<body>		
		<input type="button" value="eq()选择索引值为等于 3 的 div 元素" id="btn1" />
		<input type="button" value="first()选择第一个 div 元素" id="btn2" />
		<input type="button" value="last()选择最后一个 div 元素" id="btn3" />
		<input type="button" value="filter()在div中选择索引为偶数的" id="btn4" />
		<input type="button" value="is()判断#one是否为:empty或:parent" id="btn5" />
		<input type="button" value="has()选择div中包含.mini的" id="btn6" />
		<input type="button" value="not()选择div中class不为one的" id="btn7" />
		<input type="button" value="children()在body中选择所有class为one的div子元素" id="btn8" />
		<input type="button" value="find()在body中选择所有class为mini的div后代元素" id="btn9" />
		<input type="button" value="next()#one的下一个div" id="btn10" />
		<input type="button" value="nextAll()#one后面所有的span元素" id="btn11" />
		<input type="button" value="nextUntil()#one和span之间的元素" id="btn12" />
		<input type="button" value="parent().mini的父元素" id="btn13" />
		<input type="button" value="prev()#two的上一个div" id="btn14" />
		<input type="button" value="prevAll()span前面所有的div" id="btn15" />
		<input type="button" value="prevUntil()span向前直到#one的元素" id="btn16" />
		<input type="button" value="siblings()#two的所有兄弟元素" id="btn17" />
		<input type="button" value="add()选择所有的 span 元素和id为two的元素" id="btn18" />
		
		<h3>基本选择器.</h3>
		<br /><br />
		文本框<input type="text" name="account" disabled="disabled" />
		<br><br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other"><b>class为mini,title为other</b></div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<span id="span1">^^span元素 111^^</span>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<span id="span2">^^span元素 222^^</span>
		<div id="mover">正在执行动画的div元素.</div>
	</body>
</html>


7、jQuery的属性操作

1)属性

attr(name|properties|key,value|fn) 设置或返回被选元素的属性值 - - -不推荐checked、readOnly、selected、disabled

参数name描述:
jQuery 代码:
$("img").attr("src");

参数properties 描述:
为所有图像设置src和alt属性。
jQuery 代码:
$("img").attr({ src: "test.jpg", alt: "Test Image" });

参数key,value 描述:
为所有图像设置src属性。
jQuery 代码:
$("img").attr("src","test.jpg");

参数key,回调函数 描述:
把src属性的值设置为title属性的值。
jQuery 代码:
$("img").attr("title", function() { return this.src });

removeAttr(name) 从每一个匹配的元素中删除一个属性

描述:
将文档中图像的src属性删除

HTML 代码:
<img src="test.jpg"/>

jQuery 代码:
$("img").removeAttr("src");

结果:
[ <img /> ]

prop(name|properties|key,value|fn) 获取在匹配的元素集中的第一个元素的属性值 - - -只推荐checked、readOnly、selected、disabled 与attr()互补

参数name 描述:
选中复选框为true,没选中为false
jQuery 代码:
$("input[type='checkbox']").prop("checked");

参数properties 描述:
禁用页面上的所有复选框。
jQuery 代码:
$("input[type='checkbox']").prop({
disabled: true
});

参数key,value 描述:
禁用和选中所有页面上的复选框。
jQuery 代码:
$("input[type='checkbox']").prop("disabled", false);
$("input[type='checkbox']").prop("checked", true);

参数key,回调函数 描述:
通过函数来设置所有页面上的复选框被选中。
jQuery 代码:
$("input[type='checkbox']").prop("checked", function( i, val ) {
return !val;
});

removeProp(name) 用来删除由.prop()方法设置的属性集

描述:
设置一个段落数字属性,然后将其删除。

HTML 代码:
<p> </p>

jQuery 代码:
var $para = $("p");
$para.prop("luggageCode", 1234);
$para.append("The secret luggage code is: ", String($para.prop("luggageCode")), ". ");
$para.removeProp("luggageCode");
$para.append("Now the secret luggage code is: ", String($para.prop("luggageCode")), ". ");

结果:
The secret luggage code is: 1234. Now the secret luggage code is: undefined. 

2)CSS类

addClass(class|fn)为每个匹配的元素添加指定的类名 - - - 一个或多个要添加到元素中的CSS类名,使用空格分开

向被选元素添加一个或多个类

为匹配的元素加上 'selected' 类

jQuery 代码:
$("p").addClass("selected");
$("p").addClass("selected1 selected2");

回调函数 描述:
给li加上不同的class
HTML 代码:
<ul>
  <li>Hello</li>
  <li>Hello</li>
  <li>Hello</li>
</ul>

jQuery 代码:
$('ul li:last').addClass(function() {
	return 'item-' + $(this).index();
});

removeClass(class|fn)从所有匹配的元素中删除全部或者指定的类

从被选元素删除一个或多个类

参数class 描述:
从匹配的元素中删除 'selected' 类
jQuery 代码:
$("p").removeClass("selected");

参数class 描述:
删除匹配元素的所有类
jQuery 代码:
$("p").removeClass();

回调函数描述:
删除最后一个元素上与前面重复的class
jQuery 代码:
$('li:last').removeClass(function() {
	return $(this).prev().attr('class');
});

toggleClass(class|fn[,sw])如果存在(不存在)就删除(添加)一个类

对被选元素进行添加/删除类的切换操作

参数class 描述:
为匹配的元素切换 'selected' 类
jQuery 代码:
$("p").toggleClass("selected");

参数class,switch 描述:
每点击三下加上一次 'highlight' 类

HTML 代码:
<strong>jQuery 代码:</strong>

jQuery 代码:
var count = 0;
$("p").click(function(){
  $(this).toggleClass("highlight", count++ % 3 == 0);
});

回调函数 描述:
根据父元素来设置class属性
jQuery 代码:
$('div.foo').toggleClass(function() {
	if ($(this).parent().is('.bar') {
		return 'happy';
 	 } else {
 		return 'sad';
  	}
});

offset()获取匹配元素在当前视口的相对偏移

返回第一个匹配元素相对于文档的位置

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>品牌展示练习</title>
<style type="text/css">
* {
	margin: 0;
	padding: 0;
}

body {
	font-size: 12px;
	text-align: center;
}

a {
	color: #04D;
	text-decoration: none;
}

a:hover {
	color: #F50;
	text-decoration: underline;
}

.SubCategoryBox {
	width: 600px;
	margin: 0 auto;
	text-align: center;
	margin-top: 40px;
}

.SubCategoryBox ul {
	list-style: none;
}

.SubCategoryBox ul li {
	display: block;
	float: left;
	width: 200px;
	line-height: 20px;
}

.showmore , .showless{
	clear: both;
	text-align: center;
	padding-top: 10px;
}

.showmore a , .showless a{
	display: block;
	width: 120px;
	margin: 0 auto;
	line-height: 24px;
	border: 1px solid #AAA;
}

.showmore a span {
	padding-left: 15px;
	background: url(img/down.gif) no-repeat 0 0;
}

.showless a span {
	padding-left: 15px;
	background: url(img/up.gif) no-repeat 0 0;
}

.promoted a {
	color: #F50;
}
</style>
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
	$(function() {
		//基本初始状态
		$("li:gt(5):not(:last)").hide();
		//给功能按钮绑定单击事件
		$("div div a").click(function (){
			//让某些品牌显示或消失
			$("li:gt(5):not(:last)").toggle();

			//判断品牌,当前是否可见
			if ($("li:gt(5):not(:last)").is(":hidden")){
				//品牌隐藏的状态:1 显示全部品牌   --角标向下
				$("div div a span").text("显示全部品牌");

				$("div div ").removeClass();
				$("div div").addClass("showmore");

				//去高亮
				$("li:contains('明基')").removeClass("promoted")


			}else {

				//品牌显示的状态:2 显示精简品牌   --角标向上
				$("div div a span").text("显示精简品牌");

				$("div div ").removeClass();
				$("div div").addClass("showless");
				//加高亮
				$("li:contains('明基')").addClass("promoted")

			}

			return false;
		});

	});
</script>
</head>
<body>
	<div class="SubCategoryBox">
		<ul>
			<li><a href="#">佳能</a><i>(30440) </i></li>
			<li><a href="#">索尼</a><i>(27220) </i></li>
			<li><a href="#">三星</a><i>(20808) </i></li>
			<li><a href="#">尼康</a><i>(17821) </i></li>
			<li><a href="#">松下</a><i>(12289) </i></li>
			<li><a href="#">卡西欧</a><i>(8242) </i></li>
			<li><a href="#">富士</a><i>(14894) </i></li>
			<li><a href="#">柯达</a><i>(9520) </i></li>
			<li><a href="#">宾得</a><i>(2195) </i></li>
			<li><a href="#">理光</a><i>(4114) </i></li>
			<li><a href="#">奥林巴斯</a><i>(12205) </i></li>
			<li><a href="#">明基</a><i>(1466) </i></li>
			<li><a href="#">爱国者</a><i>(3091) </i></li>
			<li><a href="#">其它品牌相机</a><i>(7275) </i></li>
		</ul>
		<div class="showmore">
			<a href="more.html"><span>显示全部品牌</span></a>
		</div>
	</div>
</body>
</html>

3)HTML代码/文本/值

html([val|fn])取得第一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档

  • 跟dom属性innerHTML一样

注意

在一个 HTML 文档中, 我们可以使用 .html() 方法来获取任意一个元素的内容。 如果选择器匹配多于一个的元素,那么只有第一个匹配元素的 HTML 内容会被获取。

无参数 描述:
返回p元素的内容。
jQuery 代码:
$('p').html();

参数val 描述:
设置所有 p 元素的内容
jQuery 代码:
$("p").html("Hello <b>world</b>!");

回调函数描述:
使用函数来设置所有匹配元素的内容。
jQuery 代码:
$("p").html(function(n){
	return "这个 p 元素的 index 是:" + n;
});

text([val|fn])取得所有匹配元素的内容,结果是由所有匹配元素包含的文本内容组合起来的文本。这个方法对HTML和XML文档都有效。

  • 跟dom属性innerText一样

如下:

无参数 描述:
返回p元素的文本内容。
jQuery 代码:
$('p').text();

参数val 描述:
设置所有 p 元素的文本内容
jQuery 代码:
$("p").text("Hello world!");

回调函数 描述:
使用函数来设置所有匹配元素的文本内容。
jQuery 代码:
$("p").text(function(n){
 return "这个 p 元素的 index 是:" + n;
});

val([val|fn|arr])获得表单匹配元素的当前值

  • 跟dom属性value一样

如下:

无参数 描述:
获取文本框中的值
jQuery 代码:
$("input").val();

参数val 描述:
设定文本框的值
jQuery 代码:
$("input").val("hello world!");

回调函数 描述:
设定文本框的值
jQuery 代码:
$('input:text.items').val(function() {
	return this.value + ' ' + this.className;
});

举例代码如下(全选、全不选):

<script type="text/javascript" src="../../script/jquery-1.7.2.js"></script>
</head>
<body>
<script type="text/javascript">

	$(function(){
		//全选
		$("#checkedAllBtn").click(function (){
			$(":checkbox").prop("checked",true);
		});

		//全不选
		$("#checkedNoBtn").click(function (){
			$(":checkbox").prop("checked",false);
		});

		//反选
		$("#checkedRevBtn").click(function (){
			$(":checkbox[name='items']").prop("checked",function (){/*alert(this.checked);*/ return !this.checked});
			//上面的this为第二个function中通过":checkbox[name='items']"获取的集合的每一个元素

			//之后要检查是否满选,获取全部球类个数,与选中球类个数对比
			var allCounts =$(":checkbox[name='items']").length;
			var selectCounts =$(":checkbox[name='items']:checked").length;
			/*if (allCounts==selectCounts){
				$("#checkedAllBox").prop("checked",true);
			}else {
				$("#checkedAllBox").prop("checked",false);
			}*/
			$("#checkedAllBox").prop("checked",allCounts==selectCounts);
		});

		//提交
		$("#sendBtn").click(function (){
			//获取选中的球类的复选框
			$(":checkbox[name='items']:checked").each(function (){
				alert(this.value);
			});
		});

		//给[全选/全不选]绑定单击事件
		$("#checkedAllBox").click(function (){
			//在事件的function函数中,有一个this对象,这个this对象使当前正在响应事件的dom对象
			// this.checked;  this是id为checkedAllBox的单选框
			//alert(this.checked);
			$(":checkbox[name='items']").prop("checked",this.checked);
		});

		//给全部球类绑定单击事件
		$(":checkbox[name='items']").click(function (){

			//之后要检查是否满选,获取全部球类个数,与选中球类个数对比
			var allCounts =$(":checkbox[name='items']").length;
			var selectCounts =$(":checkbox[name='items']:checked").length;
			/*if (allCounts==selectCounts){
				$("#checkedAllBox").prop("checked",true);
			}else {
				$("#checkedAllBox").prop("checked",false);
			}*/
			$("#checkedAllBox").prop("checked",allCounts==selectCounts);

		});

	});

</script>

	<form method="post" action="">
	
		你爱好的运动是?<input type="checkbox" id="checkedAllBox" />全选/全不选 
		
		<br />
		<input type="checkbox" name="items" value="足球" />足球
		<input type="checkbox" name="items" value="篮球" />篮球
		<input type="checkbox" name="items" value="羽毛球" />羽毛球
		<input type="checkbox" name="items" value="乒乓球" />乒乓球
		<br />
		<input type="button" id="checkedAllBtn" value="全 选" />
		<input type="button" id="checkedNoBtn" value="全不选" />
		<input type="button" id="checkedRevBtn" value="反 选" />
		<input type="button" id="sendBtn" value="提 交" />
	</form>

</body>


8、DOM的增删改

1)内部插入嵌套-父子关系

在这里插入图片描述
总结prepend与prependTo同样

① append()a是被插入的对象,b是要在对象内插入的元素内容。

② appendTo()a是要插入的元素内容,而b是被插入的对象。


2)外部插入同级-兄弟关系after、before与内部插入的道理相同
在这里插入图片描述
3)替换
在这里插入图片描述
4)删除
在这里插入图片描述

实现代码如下:

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>DOM增删改</title>
		<link rel="stylesheet" type="text/css" href="style/css.css" />
		<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
		<script type="text/javascript">
/**
文档处理
内部插入

appendTo(content) 	   a.appendTo(b);  把a加到b里面				  添加到最后面
prependTo(content)	   a.prependTo(b); 把a添加到b里面    			  添加到最前面

外部插入
insertAfter(content) 	a.insertAfter(b);  把a插入到b的后面
insertBefore(content) 	a.insertBefore(b); 把a插入到b的前面


替换
replaceWith(content|fn) a.replaceWith(b)  把a用b替换
replaceAll(selector) 	a.replaceAll(b)	  用a替换所有的b

删除
empty() 				a.empty()   把a掏空,把a里面的所有元素都删除
remove([expr]) 			a.remove(b)  所有的a,是b的话就会删除	a.remove()删除a		



*/
			$(function(){
			
				
				$("#btn01").click(function(){
					//创建一个"广州"节点,添加到#city下[appendTo()]
					//子节点.appendTo(父节点)

					$("<li>广州</li>").appendTo("#city");
					//$("#city").append("<li>广州</li>");  效果相同

				});


				$("#btn02").click(function(){
					//创建一个"广州"节点,添加到#city下[prependTo()]

					$("<li>广州</li>").prependTo("#city");
					//$("#city").prepend("<li>广州</li>");	效果相同

				});
				
				
				
				$("#btn03").click(function(){
					//将"广州"节点插入到#bj前面[insertBefore()]
					//前边.insertBefore(后边的)
					$("<li>广州</li>").insertBefore("#bj");
					//$("#bj").before("<li>广州</li>");		效果相同

				});
				
				
				$("#btn04").click(function(){
					//将"广州"节点插入到#bj后面[insertAfter()]
					//后边.insertAfter(前边的)
					$("<li>广州</li>").insertAfter("#bj");
					//$("#bj").after("<li>广州</li>");		效果相同
					
				});
				
				$("#btn05").click(function(){
					//使用"广州"节点替换#bj节点[replaceWith()]
					//被替换的.replaceWith()
					$("#bj").replaceWith($("<li>广州</li>"));
					//$("#bj").replaceWith("<li>广州</li>);   效果相同

					
				});
				
				$("#btn06").click(function(){
					//使用"广州"节点替换#bj节点[replaceAll()]
					//新的节点.replaceAll(旧的节点)

					$("<li>广州</li>").replaceAll("#bj");

				});
				
				$("#btn07").click(function(){
					//删除#rl节点[remove()]
					//$("ul").remove("#rl");
					//$("#rl").remove();

					$("ul").remove("#rl");
					$("#rl").remove();
				});
				
				$("#btn08").click(function(){
					//掏空#city节点[empty()]
				
					$("#city").empty();
				});
				
				$("#btn09").click(function(){
					//读取#city内的HTML代码

					//jQuery对象的html输出,无参是读取,有参是设置
					alert($("#city").html());

					//dom对象的innerHTML输出,先通过jQuery对象遍历出dom对象,再取每个dom对象的innerHTML
					$("#city").each(function (){alert(this.innerHTML)});
				});
				
				$("#btn10").click(function(){
					//设置#bj内的HTML代码
					$("#bj").html("北京欢迎您!");
					
				});

			});
				
		</script>
		
	</head>
	<body>
		<div id="total">
			<div class="inner">
				<p>
					你喜欢哪个城市?
				</p>

				<ul id="city">
					<li id="bj">北京</li>
					<li>上海</li>
					<li>东京</li>
					<li>首尔</li>
				</ul>

				<br>
				<br>

				<p>
					你喜欢哪款单机游戏?
				</p>

				<ul id="game">
					<li id="rl">红警</li>
					<li>实况</li>
					<li>极品飞车</li>
					<li>魔兽</li>
				</ul>

				<br />
				<br />

				<p>
					你手机的操作系统是?
				</p>

				<ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
			</div>

			<div class="inner">
				gender:
				<input type="radio" name="gender" value="male"/>
				Male
				<input type="radio" name="gender" value="female"/>
				Female
				<br>
				<br>
				name:
				<input type="text" name="name" id="username" value="abcde"/>
			</div>
		</div>
		<div id="btnList">
			<div><button id="btn01">创建一个"广州"节点,添加到#city下[appendTo()]</button></div>
			<div><button id="btn02">创建一个"广州"节点,添加到#city下[prependTo()]</button></div>
			<div><button id="btn03">将"广州"节点插入到#bj前面[insertBefore()]</button></div>
			<div><button id="btn04">将"广州"节点插入到#bj后面[insertAfter()]</button></div>
			<div><button id="btn05">使用"广州"节点替换#bj节点[replaceWith()]</button></div>
			<div><button id="btn06">使用"广州"节点替换#bj节点[replaceAll()]</button></div>
			<div><button id="btn07">删除#rl节点[remove()]</button></div>
			<div><button id="btn08">掏空#city节点[empty()]</button></div>
			<div><button id="btn09">读取#city内的HTML代码</button></div>
			<div><button id="btn10">设置#bj内的HTML代码</button></div>
			
		</div>
	</body>
</html>

9、练习

练习题1:左到右、右到左

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
	<style type="text/css">
		select {
			width: 100px;
			height: 140px;
		}
		
		div {
			width: 130px;
			float: left;
			text-align: center;
		}
	</style>
	<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
	<script type="text/javascript">
		//页面加载完成之后
		$(function (){
			//绑定第一个按钮,选中添加到右边
			$("button:eq(0)").click(function (){
				$("[name=sel01] option:selected").appendTo($("[name=sel02]"));
			});

			//绑定第二个按钮,选中添加全部到右边
			$("button:eq(1)").click(function (){
				$("[name=sel01] option").appendTo($("[name=sel02]"));
			});

			//绑定第三个按钮,选中添加全部到右边
			$("button:eq(2)").click(function (){
				$("[name=sel02] option:selected").appendTo($("[name=sel01]"));
			});
			//绑定第四个按钮,选中添加全部到右边
			$("button:eq(3)").click(function (){
				$("[name=sel02] option").appendTo($("[name=sel01]"));
			});
		});
		
	</script>
</head>
<body>

	<div id="left">
		<select multiple="multiple" name="sel01">
			<option value="opt01">选项1</option>
			<option value="opt02">选项2</option>
			<option value="opt03">选项3</option>
			<option value="opt04">选项4</option>
			<option value="opt05">选项5</option>
			<option value="opt06">选项6</option>
			<option value="opt07">选项7</option>
			<option value="opt08">选项8</option>
		</select>
		
		<button>选中添加到右边</button>
		<button>全部添加到右边</button>
	</div>
	<div id="rigth">
		<select multiple="multiple" name="sel02">
		</select>
		<button>选中删除到左边</button>
		<button>全部删除到左边</button>
	</div>

</body>
</html>

练习题2:添加删除记录

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<link rel="stylesheet" type="text/css" href="styleB/css.css" />
<script type="text/javascript" src="../../script/jquery-1.7.2.js"></script>
<script type="text/javascript">

		$(function (){

			//创建一个用于复用的删除的function函数
			var deleteFun=function (){

				//在事件响应的function函数中,this对象是当前
				//							正在响应事件的dom对象
				//取到此当前a标签的行
				var $trObj=$(this).parent().parent();

				var name=$trObj.find("td:first").text();
				/*
				* confirm是js语言提供的一个确认提示框函数,提供什么就提示什么
				* 当用户点击确定返回true,点击取消返回false
				* */
				if (confirm("确定要删除["+name+"]吗?")){
					$trObj.remove();
				}
				return false;  //可以阻止元素的默认行为

			};

			//添加操作
			$("#addEmpButton").click(function (){
				//获取输入框姓名、邮箱、工资的内容
				var name =$("#empName").val();
				var email =$("#email").val();
				var salary =$("#salary").val();


				//创建一个行标签对象,添加到显示数据的表格中
				var $trObj=$("<tr>" +
						"<td>" + name + "</td>" +
						"<td>" + email + "</td>" +
						"<td>" + salary + "</td>" +
						"<td><a href=\"deleteEmp?id=002\">Delete</a></td>" +
						"</tr>");

				$trObj.appendTo("#employeeTable ")

				//给添加的行的a标签绑上事件
				$trObj.find("a").click(deleteFun);

			});

			//删除操作
			//给删除的a标签绑定单击事件
			$("a").click(deleteFun);

		});

	
</script>
</head>
<body>

	<table id="employeeTable">
		<tr>
			<th>Name</th>
			<th>Email</th>
			<th>Salary</th>
			<th>&nbsp;</th>
		</tr>
		<tr>
			<td>Tom</td>
			<td>tom@tom.com</td>
			<td>5000</td>
			<td><a href="deleteEmp?id=001">Delete</a></td>
		</tr>
		<tr>
			<td>Jerry</td>
			<td>jerry@sohu.com</td>
			<td>8000</td>
			<td><a href="deleteEmp?id=002">Delete</a></td>
		</tr>
		<tr>
			<td>Bob</td>
			<td>bob@tom.com</td>
			<td>10000</td>
			<td><a href="deleteEmp?id=003">Delete</a></td>
		</tr>

	</table>

	<div id="formDiv">
	
		<h4>添加新员工</h4>

		<table>
			<tr>
				<td class="word">name: </td>
				<td class="inp">
					<input type="text" name="empName" id="empName" />
				</td>
			</tr>
			<tr>
				<td class="word">email: </td>
				<td class="inp">
					<input type="text" name="email" id="email" />
				</td>
			</tr>
			<tr>
				<td class="word">salary: </td>
				<td class="inp">
					<input type="text" name="salary" id="salary" />
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<button id="addEmpButton" value="abc">
						Submit
					</button>
				</td>
			</tr>
		</table>

	</div>

</body>
</html>


10、jQuery动画

在这里插入图片描述

<script type="text/javascript">

		$(function(){
			//显示   show()
			$("#btn1").click(function(){
				$("#div1").show(1000,function (){
					alert("show动画完成");
				});
			});

			//隐藏  hide()
			$("#btn2").click(function(){
				$("#div1").hide(2000);
			});	
			//切换   toggle()
			$("#btn3").click(function(){
				$("#div1").toggle(1000);
			});

			/*//故可以实现一直动画
			var fun=function (){
				$("#div1").toggle(1000,fun);
			};
			fun();*/
			
			//淡入   fadeIn()
			$("#btn4").click(function(){
				$("#div1").fadeIn(1000,function (){
					alert("fadeIn完成")
				});
			});	
			//淡出  fadeOut()
			$("#btn5").click(function(){
				$("#div1").fadeOut(1000);
			});	
			
			//淡化到  fadeTo()
			$("#btn6").click(function(){
				$("#div1").fadeTo(1000,0.5,function (){
					alert("0.5的透明的已完成")
				});
			});	
			//淡化切换  fadeToggle()
			$("#btn7").click(function(){
				$("#div1").fadeToggle(1000);
			});	
		})
</script>


11、jQuery事件操作

1、$(function(){});和window.onload的区别?

①:

window.onload会在整个页面加载完毕之后调用

$(function(){});会在当前文档加载完毕之后调用

//1、导入jquery的.js文件
//2、可以在导入文件后的任意位置
//   1)、可以写在head里面,如果写在head里面可能导致元素查找不到等问题
//			1-1、只需要把代码写在$(function(){ jquery代码  })
//   2)、可以写在head之后的任意位置,我们一般不采用这种写法。
//	 3)、综合以上考虑,1-1
//3、window.onload & $(function(){})
//window.onload只可以使用一次,且执行最后一次的赋值函数。
//$(function(){})可以使用多次

② 它们分别在什么时候触发?

1、jQuery的页面加载完成之后是浏览器的内核解析完页面的标签创建好DOM对象之后就会马上执行。

2、原生js的页面加载完成之后,除了要等浏览器的内核解析完标签创建好DOM对象,还要等标签显示时需要的内容加载完成。

③ 它们触发的顺序?

1、jQuery页面加载完成之后先执行

2、原生js的页面加载完成之后


2、jQuery中其他的事件处理方法:

在这里插入图片描述

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<link href="css/style.css" type="text/css" rel="stylesheet" />
		<script type="text/javascript" src="../../script/jquery-1.7.2.js"></script>
		<script type="text/javascript">
		
			$(function(){
				 /*$("h5").click(function () { // 传function是绑定事件
				 	alert('h5单击事件 == click方法绑定')
				 });*/

				// 使用live绑定的单击事件
				$("h5").live("click",function () {
					alert('h5单击事件 == live方法绑定');
				});

				$('<h5 class="head">什么是jQuery?</h5>').appendTo( $("#panel") );

				// $("button").click(function () {
				// 	$("h5").click(); // 不传function是触发事件
				// });
				//鼠标移入
				// $("h5").mouseover(function () {
				// 	console.log("你进来了")
				// });
				// //鼠标移出
				// $("h5").mouseout(function () {
				// 	console.log("你出去了")
				// });

				// 使用bind绑定事件
				// $("h5").bind("click mouseover mouseout",function () {
				// 	console.log("这是bind绑定的事件");
				// });

				// $("h5").one("click mouseover mouseout",function () {
				// 	console.log("这是one绑定的事件");
				// });

				// $("h5").unbind();


			});
		
		</script>
	</head>
	<body>
		<div id="panel">
			<h5 class="head">什么是jQuery?</h5>
			<div class="content">
				jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
			</div>
			<button>按钮</button>
		</div>
	</body>

</html>

3、事件的冒泡:

什么是事件的冒泡

事件的冒泡是指:父子元素同时监听一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去响应。

如何阻止事件的冒泡

子元素事件函数体内,return false; 就可以阻止冒泡传递。

		<script type="text/javascript" src="jquery-1.7.2.js"></script>
		<script type="text/javascript">
			$(function(){
				
				//冒泡就是事件的向上传导,子元素的事件被触发,父元素的响应事件也会触发
				//解决冒泡问题:return false;
				
				//给span绑定一个单击响应函数
				$("span").click(function(){
					alert("我是span的单击响应函数");
					return false; //阻止冒泡问题
				});
				
				//给id为content的div绑定一个单击响应函数
				$("#content").click(function(){
					alert("我是div的单击响应函数");
					return false;
				});
				
				//给body绑定一个单击响应函数
				$("body").click(function(){
					//alert("我是body的单击响应函数");
				});
				
				//取消默认行为
				/* $("a").click(function(){
					return false;
				}) */
				
			})
		</script>

4、javaScript事件对象:

事件对象,是封装有触发的事件信息的一个javascript对象。

4.1 如何获取JavaScript事件对象

在给元素绑定事件的时候在事件的function(event)参数列表中添加一个参数,这个参数名,我们习惯取名为event。

比如:
	① 原生javascript绑定获取事件对象
	② jQuery代码绑定获取事件对象
	③ 使用bind同时对多个事件绑定同一个函数。怎么获取当前操作是什么事件?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">

	#areaDiv {
		border: 1px solid black;
		width: 300px;
		height: 50px;
		margin-bottom: 10px;
	}
	
	#showMsg {
		border: 1px solid black;
		width: 300px;
		height: 20px;
	}

</style>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">

	//1.原生javascript获取 事件对象
	 window.onload = function () {
	 	document.getElementById("areaDiv").onclick = function (event) {
	 		console.log(event);
	 	}
	 }
	//2.JQuery代码获取 事件对象
	$(function () {
		 	$("#areaDiv").click(function (event) {
		 	console.log(event);
		 });
		
		//3.使用bind同时对多个事件绑定同一个函数。怎么获取当前操作是什么事件。
		$("#areaDiv").bind("mouseover mouseout",function (event) {
			if (event.type == "mouseover") {
				console.log("鼠标移入");
			} else if (event.type == "mouseout") {
				console.log("鼠标移出");
			}
		});
	});

</script>
</head>
<body>

	<div id="areaDiv"></div>
	<div id="showMsg"></div>

</body>
</html>

4.2 运用javascript对象练习 - -图片跟随

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
	body {
		text-align: center;
	}
	#small {
		margin-top: 150px;
	}
	#showBig {
		position: absolute;
		display: none;
	}
</style>
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
	$(function(){
		$("#small").bind("mouseover mouseout mousemove",function (event){
			if (event.type=="mouseover"){
				$("#showBig").show();
			}else if (event.type=="mouseout"){
				$("#showBig").hide();
			}else if (event.type=="mousemove"){
				$("#showBig").offset({		//设置坐标
					left: event.pageX+20,
					top:event.pageY+20
				});
			}
		});
	});
</script>
</head>
<body>

	<img id="small" src="img/small.jpg" />
	
	<div id="showBig">
		<img src="img/big.jpg">
	</div>

</body>
</html>


12、书城项目第一阶段:表单验证

验证用户名:必须由字母,数字下划线组成,并且长度5-12位

验证密码:必须由字母,数字下划线组成,并且长度5-12位

验证确认密码:与密码相同

邮箱验证:xxxxx@xxx.com

验证码:现在只需要验证用户已输入,应为还没讲到服务器,验证码生成。

<html>
<head>
<meta charset="UTF-8">
<title>尚硅谷会员注册页面</title>
<link type="text/css" rel="stylesheet" href="../../static/css/style.css" >
	<script type="text/javascript" src="../../static/script/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			//页面加载完成之后
			$(function (){
				//给注册提交绑定单击事件
				$("#sub_btn").click(function (){
					//1、获取用户名输入框里的内容
					var usernameText = $("#username").val();
					//2、创建正则表达式对象
					var usernamePatt=/^\w{5,12}$/;
					//3、使用test方法验证
					if (!usernamePatt.test(usernameText)){
						//4、提示用户结果
						$("span.errorMsg").text("用户名不合法!");
						return false;
					}

					//1、获取用户名输入框里的内容
					var passwordText = $("#password").val();
					//2、创建正则表达式对象
					var passwordPatt=/^\w{5,12}$/;
					//3、使用test方法验证
					if (!passwordPatt.test(passwordText)){
						//4、提示用户结果
						$("span.errorMsg").text("密码不合法!");
						return false;
					}


					//1、获取用户名输入框里的内容
					var repwdText = $("#repwd").val();
					//3、使用test方法验证
					if (passwordText != repwdText){
						//4、提示用户结果
						$("span.errorMsg").text("确认密码和密码不一致!");
						return false;
					}


					//1、获取用户名输入框里的内容
					var emailText = $("#email").val();
					//2、创建正则表达式对象
					var emailPatt=/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
					//3、使用test方法验证
					if (!emailPatt.test(emailText)){
						//4、提示用户结果
						$("span.errorMsg").text("邮箱格式不合法!");
						return false;
					}

					//验证码
					var codeText = $("#code").val();

					//去掉验证码前后空格
					codeText=$.trim(codeText);

					if (codeText==null || codeText==""){
						$("span.errorMsg").text("验证码错误!")
					}

					$("span.errorMsg").text("");

				});
			});

		</script>
<style type="text/css">
	.login_form{
		height:420px;
		margin-top: 25px;
	}
	
</style>
</head>
<body>
		<div id="login_header">
			<img class="logo_img" alt="" src="../../static/img/logo.gif" >
		</div>
		
			<div class="login_banner">
			
				<div id="l_content">
					<span class="login_word">欢迎注册</span>
				</div>
				
				<div id="content">
					<div class="login_form">
						<div class="login_box">
							<div class="tit">
								<h1>注册尚硅谷会员</h1>
								<span class="errorMsg"></span>
							</div>
							<div class="form">
								<form action="regist_success.html">
									<label>用户名称:</label>
									<input class="itxt" type="text" placeholder="请输入用户名" autocomplete="off" tabindex="1" name="username" id="username" />
									<br />
									<br />
									<label>用户密码:</label>
									<input class="itxt" type="password" placeholder="请输入密码" autocomplete="off" tabindex="1" name="password" id="password" />
									<br />
									<br />
									<label>确认密码:</label>
									<input class="itxt" type="password" placeholder="确认密码" autocomplete="off" tabindex="1" name="repwd" id="repwd" />
									<br />
									<br />
									<label>电子邮件:</label>
									<input class="itxt" type="text" placeholder="请输入邮箱地址" autocomplete="off" tabindex="1" name="email" id="email" />
									<br />
									<br />
									<label>验证码:</label>
									<input class="itxt" type="text" style="width: 150px;" id="code"/>
									<img alt="" src="../../static/img/code.bmp" style="float: right; margin-right: 40px">									
									<br />
									<br />
									<input type="submit" value="注册" id="sub_btn" />
									
								</form>
							</div>
							
						</div>
					</div>
				</div>
			</div>
		<div id="bottom">
			<span>
				尚硅谷书城.Copyright &copy;2015
			</span>
		</div>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值