简介
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<script type="text/javascript">
window.onload = function () {
var btnObj = document.getElementById("btn");
btnObj.onclick = function () {
alert("js 原生的单击事件");
}
}
</script>
</head>
<body>
<button id="btn">Say hello</button>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () { //表示页面加载完成之后,相当于window.onload = function (){}
var $btnObj = $("#btn"); //表示按id查询标签对象
$btnObj.click(function () { //绑定单击事件
alert("jQuery 的单击事件");
});
});
</script>
</head>
<body>
<button id="btn">Say hello</button>
</body>
</html>
- 使用jQuery必须引入jQuery库
- jQuery中$是一个函数
- 为按钮添加函数的一般步骤:
- 使用jQuery查询到标签对象
- 使用标签对象.click(function(){});
jQuery核心函数$
$是jQuery的核心函数,能完成jQuery的很多功能,$()就是调用这个核心函数。
- 当传入参数为【函数】时:
表示在页面加载完成之后。相当于相当于window.onload = function (){}
- 传入参数为【HTML字符串】时:
会对我们创建html标签对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
$("<button id=\"btn\">Say hello</button>").appendTo("body");
});
</script>
</head>
<body>
<button id="btn">Say hello</button>
</body>
</html>
传入参数为【选择器字符串】时:
$(“#id属性值”); id选择器,根据id查询标签对象
$(“标签名”); 标签名选择器,根据指定标签名查询标签对象
$(“.class属性值”); 类型选择器,可以根据class属性值查询标签对象<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
alert($("button").length);
});
</script>
</head>
<body>
<button>Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
</body>
</html>
传入参数为【DOM对象】时:
会把这个dom对象转化为jQuery对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
var btnObj = document.getElementById("btn01"); //Dom对象
alert(btnObj); //[object HTMLButtonElement]
alert($(btnObj)); //[object Object] jQuery对象
});
</script>
</head>
<body>
<button id="btn01">Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
</body>
</html>
DOM对象与jQuery对象的区分
DOM对象alert出来的效果是:[object HTML 标签名 Element]
jQuery对象alert出来的效果是:[object Object]
jQuery对象
- 通过JQuery提供的API创建的对象,是JQuery对象
- 通过JQuery包装的Dom对象,也是JQuery对象
通过JQuery提供的API查询到的对象,是JQuery对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
// 通过JQuery提供的API创建的对象,是JQuery对象
var $h1 = $("<h1></h1>");
alert($h1); //[object Object]
// 通过JQuery包装的Dom对象,也是JQuery对象
var btnObj = document.getElementById("btn01"); //Dom对象
alert(btnObj); //[object HTMLButtonElement]
alert($(btnObj)); //[object Object] jQuery对象
// 通过JQuery提供的API查询到的对象,是JQuery对象
var $btn01 = $("#btn01");
alert($btn01);//[object Object]
});
</script>
</head>
<body>
<button id="btn01">Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
</body>
</html>
jQuery对象的本质
jQuery对象是DOM对象的数组 + jQuery提供的一系列功能函数。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
var $btns = $("button");
alert($btns); //[object Object] jQuery对象
for (var i = 0; i < $btns.length; i++) {
alert($btns[i]); //[object HTMLButtonElement] DOM对象
}
});
</script>
</head>
<body>
<button id="btn01">Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
</body>
</html>
jQuery对象与Dom对象的区别
jQuery对象不能使用DOM对象的属性和方法
DOM对象也不能使用jQuery对象的属性和方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb</title>
<!--引入jQuery-->
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
//document.getElementById("btn01").innerHTML = "这是Dom对象的属性innerHTML";
//Dom对象的属性和方法jQuery对象无法使用
//$("#btn01").innerHTML = "这是Dom对象的属性innerHTML"; //无法使用
//$("#btn01")[0].innerHTML = "这是Dom对象的属性innerHTML"; //可以使用
// $("#btn01").click(function () {
// alert("click()是jQuery对象的方法");
// });
//jQuery对象的属性和方法Dom对象无法使用
// document.getElementById("btn01").click(function () { //无法实现
// alert("click()是jQuery对象的方法");
// });
});
</script>
</head>
<body>
<button id="btn01">Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
<button>Say hello</button>
</body>
</html>
Dom对象和jQuery对象相互转化
Dom对象转jQuery对象
jQuery选择器
基本选择器:
ID 选择器: 根据id查找标签对象
.class选择器:根据class查找标签对象element选择器:根据标签名查找标签对象
* 选择器: 表示任意的,所有的元素
selector1,selector2组合选择器:合并选择器1,选择器2的结果并返回
<!DOCTYPE html>
<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="jquery-1.7.2.js"></script>
<script type="text/javascript">
//页面加载完之后才能执行
$(function () {
//1.选择 id 为 one 的元素 "background-color","#bbffaa"
$("#btn1").click(function () {
// css() 方法 可以设置和获取样式
$("#one").css("background-color", "#bbffaa");
});
//2.选择 class 为 mini 的所有元素
$("#btn2").click(function () {
$(".mini").css("background-color", "#bbffaa");
});
//3.选择 元素名是 div 的所有元素
$("#btn3").click(function () {
$("div").css("background-color", "#bbffaa");
});
//4.选择所有的元素
$("#btn4").click(function () {
$("*").css("background-color", "#bbffaa");
});
//5.选择所有的 span 元素和id为two的元素
$("#btn5").click(function () {
$("span, #two").css("background-color", "#bbffaa");
});
});
</script>
</head>
<body>
<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>
层级选择器
ancestor descendant后代选择器:在给定的祖先元素下匹配所有的后代元素
parent > child 子元素选择器:在给定的父元素下匹配所有的子元素(直接孩子,孙子不算)
prev + next 相邻元素选择器:匹配所有紧接在prev元素后的next元素
prev ~ sibings 之后的兄弟元素选择器:匹配prev元素之后的所有siblings元素
<!DOCTYPE html>
<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="jquery-1.7.2.js"></script>
<script type="text/javascript">
//简写
// $(function () {
//
// });
//全名
$(document).ready(function () {
//1.选择 body 内的所有 div 元素
$("#btn1").click(function () {
$("body div").css("background", "#bbffaa");
});
//2.在 body 内, 选择div子元素
$("#btn2").click(function () {
$("body > div").css("background", "#bbffaa");
});
//3.选择 id 为 one 的下一个 div 元素
$("#btn3").click(function () {
$("#one+div").css("background", "#bbffaa");
});
//4.选择 id 为 two 的元素后面的所有 div 兄弟元素
$("#btn4").click(function () {
$("#two~div").css("background", "#bbffaa");
});
});
</script>
</head>
<body>
<!-- <div>
<h1>层级选择器:根据元素的层级关系选择元素</h1>
ancestor descendant :
parent > child :
prev + next :
prev ~ siblings :
</div> -->
<input type="button" value="选择 body 内的所有 div 元素" id="btn1"/>
<input type="button" value="在 body 内, 选择div子元素" id="btn2"/>
<input type="button" value="选择 id 为 one 的下一个 div 元素" id="btn3"/>
<input type="button" value="选择 id 为 two 的元素后面的所有 div 兄弟元素" id="btn4"/>
<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>
<span id="span">^^span元素^^</span>
</body>
</html>
基本过滤选择器
:first 获取第一个元素
:last 获取最后个元素
:not(selector) 去除所有与给定选择器匹配的元素
:even 匹配所有索引值为偶数的元素,从 0 开始计数
:odd 匹配所有索引值为奇数的元素,从 0 开始计数
:eq(index) 匹配一个给定索引值的元素
:gt(index) 匹配所有大于给定索引值的元素
:lt(index) 匹配所有小于给定索引值的元素
:header 匹配如 h1, h2, h3 之类的标题元素
:animated 匹配所有正在执行动画效果的元素
<!DOCTYPE html>
<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="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>
内容过滤选择器
:contains(text) 匹配包含给定文本的元素
:empty 匹配所有不包含子元素或者文本的空元素
:parent 匹配含有子元素或者文本的元素
:has(selector) 匹配含有选择器所匹配的元素的元素
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>内容过滤选择器</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="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>
</head>
<body>
<input type="button" value="选择 含有文本 'di' 的 div 元素" id="btn1"/>
<input type="button" value="选择不包含子元素(或者文本元素) 的 div 空元素" id="btn2"/>
<input type="button" value="选择含有 class 为 mini 元素的 div 元素" id="btn3"/>
<input type="button" value="选择含有子元素(或者文本元素)的div元素" id="btn4"/>
<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>
属性过滤选择器
[attribute] 匹配包含给定属性的元素。
[attribute = value] 匹配给定的属性是某个特定值的元素
[attribute != value] 匹配所有不含有指定的属性,或者属性不等于特定值的元素。
[attribute ^= value] 匹配给定的属性是以某些值开始的元素
[attribute $= value] 匹配给定的属性是以某些值结尾的元素
[attribute *= value] 匹配给定的属性是以包含某些值的元素
[attrSel1][attrSel2][attrselN] 复合属性选择器,需要同时满足多个条件时使用。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>属性过滤选择器</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="jquery-1.7.2.js"></script>
<script type="text/javascript">
/**
[attribute]
[attribute=value]
[attribute!=value]
[attribute^=value]
[attribute$=value]
[attribute*=value]
[attrSel1][attrSel2][attrSelN]
*/
$(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 () {
$("div[title][title!='test']").css("background", "#bbffaa");
});
});
</script>
</head>
<body>
<input type="button" value="选取含有 属性title 的div元素." id="btn1" style="display: none" />
<input type="button" value="选取 属性title值等于'test'的div元素." id="btn2" />
<input type="button" value="选取 属性title值不等于'test'的div元素(没有属性title的也将被选中)." id="btn3" />
<input type="button" value="选取 属性title值 以'te'开始 的div元素." id="btn4" />
<input type="button" value="选取 属性title值 以'est'结束 的div元素." id="btn5" />
<input type="button" value="选取 属性title值 含有'es'的div元素." id="btn6" />
<input type="button" value="组合属性选择器,首先选取有属性id的div元素,然后在结果中 选取属性title值 含有'es'的 div 元素." id="btn7" />
<input type="button" value="选取 含有 title 属性值, 且title 属性值不等于 test 的 div 元素." id="btn8" />
<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" value="123456789" size="8" />
</div>
<div id="mover">正在执行动画的div元素.</div>
</body>
</html>