介绍
jQuery就是辅助 JavaScript 开发的 js 类库。
使用
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script>
$(function () { // 表示页面加载完成 之后,相当 window.onload = function () {}
var $btnObj = $("#btnId"); // 表示按 id 查询标签对象
$btnObj.click(function () { // 绑定单击事件
alert("jQuery 的单击事件");
});
});
</script>
核心函数
$ 是 jQuery 的核心函数,能完成 jQuery 的很多功能。$()就是调用$这个函数
1、传入参数为 [ 函数 ] 时:
- 表示页面加载完成之后。相当于 window.onload = function(){}
2、传入参数为 [ HTML 字符串 ] 时:
- 会对我们创建这个 html 标签对象
3、传入参数为 [ 选择器字符串 ] 时:
- $(“:#id 属性值”); id 选择器,根据 id 查询标签对象
- $(“:标签名”); 标签名选择器,根据指定的标签名查询标签对象
- $(“:.class 属性值”); 类型选择器,可以根据 class 属性查询标签对象
4、传入参数为 [ DOM 对象 ] 时:
- 会把这个 dom 对象转换为 jQuery 对象
DOM对象和jQuery对象的区分
什么是DOM对象、jQuery对象
Dom对象
- getElementById()
- getElementsByName()
- getElementsByTagName()
- createElement()
[object HTML 标签名 Element]
JQuery 对象
- 通过 JQuery 提供的 API 创建的对象
- 通过 JQuery 包装的 Dom 对象
- 通过 JQuery 提供的 API 查询到的对象
[object Object]
jQuery对象的本质
jQuery 对象是 Dom对象的数组 + jQuery 提供的一系列功能函数。
jQuery对象和 Dom 对象使用区别
无法使用对方的属性和方法
Dom对象和 jQuery对象互转 (*重点)
Dom对象转化为 jQuery 对象
- 先有 DOM 对象
- $(DOM 对象) 就可以转换成为 jQuery 对象
jQuery 对象转为 dom 对象
- 先有 jQuery 对象
- $obj[下标] 取出相应的 DOM 对象
jQuery选择器(*重点)
基本选择器
| 写法 | 含义 |
|---|---|
| #ID | 根据 id 查找标签对象 |
| .class | 根据给定的 class 查找标签对象 |
| element | 根据标签名查找标签对象 |
| * | 查到所有的元素 |
| selector1,selector2,selectorN | 将每一个选择器匹配到的元素合并后一起返回 |
p.myClass //表示标签名必须是 p 标签,而且 class 类型还要是 myClass
层级选择器
| 写法 | 名称 | 含义 |
|---|---|---|
| ancestor descendant | 后代选择器 | 在给定的祖先元素下匹配所有的后代元素 |
| parent > child | 子元素选择器 | 在给定的父元素下匹配所有的子元素 |
| prev + next | 相邻元素选择器 | 匹配所有紧接在 prev 元素后的 next 元素 |
| prev ~ sibings | 之后的兄弟元素选择器 | 匹配 prev 元素之后的所有 siblings 元素 |
过滤选择器
基本选择器
| 写法 | 含义 |
|---|---|
| :first | 获取第一个元素 |
| :last | 获取最后个元素 |
| :not(selector) | 去除所有与给定选择器匹配的元素 |
| :even | 匹配所有索引值为偶数的元素,从 0 开始计数 |
| :odd | 匹配所有索引值为奇数的元素,从 0 开始计数 |
| :eq(index) | 给定一个匹配索引值的元素 |
| :gt(index) | 匹配所有大于给定索引值的元素 |
| :lt(index) | 匹配所有小于给定索引值的元素 |
| :header | 匹配如 h1, h2, h3 之类的标题元素 |
| :animated | 匹配所有正在执行动画效果的元素 |
内容过滤器
| 写法 | 含义 |
|---|---|
| :contains(text) | 匹配包含给定文本的元素 |
| :empty | 匹配所有不包含子元素或者文本的空元素 |
| :parent | 匹配含有子元素或者文本的元素 |
| :has(selector) | 匹配含有选择器所匹配的元素的元素 |
属性过滤器
| 写法 | 含义 |
|---|---|
| [attribute] | 匹配包含给定属性的元素。 |
| [attribute=value] | 匹配给定的属性是某个特定值的元素 |
| [attribute!=value] | 匹配所有不含有指定的属性,或者属性不等于特定值的元素。 |
| [attribute^=value] | 匹配给定的属性是以某些值开始的元素 |
| [attribute$=value] | 匹配给定的属性是以某些值结尾的元素 |
| [attribute*=value] | 匹配给定的属性是以包含某些值的元素 |
| [attrSel1] [attrSel2][attrSelN] | 复合属性选择器,需要同时满足多个条件时使用 |
表单过滤器
| 写法 | 含义 |
|---|---|
| :input | 匹配所有 input, textarea, select 和 button 元素 |
| :text | 匹配所有文本输入框 |
| :password | 匹配所有的密码输入框 |
| :radio | 匹配所有的单选框 |
| :checkbox | 匹配所有的复选框 |
| :submit | 匹配所有提交按钮 |
| :image | 匹配所有 img 标签 |
| :reset | 匹配所有重置按钮 |
| :button | 匹配所有 input type=button 按钮 |
| :file | 匹配所有 input type=file 文件上传 |
| :hidden | 匹配所有不可见元素 display:none 或 input type=hidden |
表单对象属性过滤器
| 写法 | 含义 |
|---|---|
| :enabled | 匹配所有可用元素 |
| :disabled | 匹配所有不可用元素 |
| :checked | 匹配所有选中的单选,复选,和下拉列表中选中的 option 标签对象 |
| :selected | 匹配所有选中的 option |
元素筛选方法
| 写法 | 含义 |
|---|---|
| eq() | 获取给定索引的元素 功能跟 :eq() 一样 |
| first() | 获取第一个元素 功能跟 :first 一样 |
| last() | 获取最后一个元素 功能跟 :last 一样 |
| filter(exp) | 留下匹配的元素 |
| is(exp) | 判断是否匹配给定的选择器,只要有一个匹配就返回,true |
| has(exp) | 返回包含有匹配选择器的元素的元素 功能跟 :has 一样 |
| not(exp) | 删除匹配选择器的元素 功能跟 :not 一样 |
| children(exp) | 返回匹配给定选择器的子元素 功能跟 parent>child 一样 |
| find(exp) | 返回匹配给定选择器的后代元素 功能跟 ancestor descendant 一样 |
| next() | 返回当前元素的下一个兄弟元素 功能跟 prev + next 功能一样 |
| nextAll() | 返回当前元素后面所有的兄弟元素 功能跟 prev ~ siblings 功能一样 |
| nextUntil() | 返回当前元素到指定匹配的元素为止的后面元素 |
| parent() | 返回父元素 |
| prev(exp) | 返回当前元素的上一个兄弟元素 |
| prevAll() | 返回当前元素前面所有的兄弟元素 |
| prevUnit(exp) | 返回当前元素到指定匹配的元素为止的前面元素 |
| siblings(exp) | 返回所有兄弟元素 |
| add() | 把 add 匹配的选择器的元素添加到当前 jquery 对象中 |
jQuery的属性操作
| 写法 | 含义 |
|---|---|
| html() | 设置和获取起始标签和结束标签中的内容。 跟 dom 属性 innerHTML 一样。 |
| text() | 设置和获取起始标签和结束标签中的文本。 跟 dom 属性 innerText 一样。 |
| val() | 设置和获取表单项的 value 属性值,跟 dom 属性 value 一样 |
以上3个函数不传参数时用来获取,传了参数则用来设置
val()还可以同时设置多个表单项的选中状态
// 批量操作单选
$(":radio").val(["radio2"]);
// 批量操作筛选框的选中状态
$(":checkbox").val(["checkbox3","checkbox2"]);
// 批量操作多选的下拉框选中状态
$("#multiple").val(["mul2","mul3","mul4"]);
// 操作单选的下拉框选中状态
$("#single").val(["sin2"]);
//一次性操作多个表单项
$("#multiple,#single,:radio,:checkbox").val(["radio2","checkbox1","checkbox3","mul1","mul4","sin3"]
);
| 写法 | 含义 |
|---|---|
| attr() | 可以设置和获取属性的值,不推荐操作 checked、readOnly、selected、disabled 等等 ,还可以操作非标准的属性。比如自定义属性:abc,bbj |
| prop() | 可以设置和获取属性的值,只推荐操作 checked、readOnly、selected、disabled 等等 |
//获取name的属性值
alert($("checkbox:first").attr("name"));
//设置name的属性值为abc
$("checkbox:first").attr("name","abc");
//获取复选框的选中状态
alert($(":checkbox").prop("checked"));
//设置复选框的选中状态
$(":checkbox").prop("checked",true);
练习:全选、全不选
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<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">
$(function () {
//全选/全不选
$("#checkedAllBox").click(function () {
//在事件的function中,有一个this对象,这个this对象是当前正在响应时间的dom对象
$(":checkbox[name='items']").prop("checked", this.checked);
})
$("#checkedAllBtn").click(function () {
$(":checkbox").prop("checked", true);
})
$("#checkedNoBtn").click(function () {
$(":checkbox").prop("checked", false);
})
$("#checkedRevBtn").click(function () {
$(":checkbox[name='items']").each(function () {
this.checked = !this.checked;
})
checkAll();
})
$("#sendBtn").click(function () {
$(":checkbox[name='items']:checked").each(function () {
alert(this.value);
});
})
//全部球类的点击事件
$(":checkbox[name='items']").click(function () {
checkAll();
})
function checkAll() {
var allCount = $(":checkbox[name='items']").length;//全部球类复选框
var checkedCount = $(":checkbox[name='items']:checked").length;//选中的球类复选框
$("#checkedAllBox").prop("checked", allCount == checkedCount);
}
});
</script>
</head>
<body>
<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>
</html>
DOM的增删改
| 写法 | 含义 |
|---|---|
| a.appendTo(b) | 把 a 插入到 b 子元素末尾,成为最后一个子元素 |
| a.prependTo(b) | 把 a 插到 b 所有子元素前面,成为第一个子元素 |
外部插入:
| 写法 | 含义 |
|---|---|
| a.insertAfter(b) | 得到 ba |
| a.insertBefore(b) | 得到 ab |
替换:
| 写法 | 含义 |
|---|---|
| a.replaceWith(b) | 用 b 替换掉 a |
| a.replaceAll(b) | 用 a 替换掉所有 b |
删除:
| 写法 | 含义 |
|---|---|
| a.remove(); | 删除 a 标签 |
| a.empty(); | 清空 a 标签里的内容 |
练习:左右列表项的移动
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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 () {
$("select[name='sel01'] option:selected").appendTo($("select[name='sel02']"))
})
//全部选中添加到右边
$("button:eq(1)").click(function () {
$("select[name='sel01'] option").appendTo($("select[name='sel02']"))
})
//选中添加到左边
$("button:eq(2)").click(function () {
$("select[name='sel02'] option:selected").appendTo($("select[name='sel01']"))
})
//全部选中添加到左边
$("button:eq(3)").click(function () {
$("select[name='sel02'] option").appendTo($("select[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>
练习:添加和删除记录
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<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 () {
$("#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>");
//为新添加的a标签单独添加点击事件
$trObj.find("a").click(remove);
$trObj.appendTo($("#employeeTable"));
});
//为初始化数据的a标签添加点击事件
$("td a").click(remove)
//当需要复用此函数时,只需要在调用方法中传入此方法名即可。
function remove() {
var $trObj = $(this).parent().parent();
var name = $trObj.find("td:first").text();
console.log(name);
if (confirm("确定要删除" + name+"吗?")) {
$trObj.remove();
}
return false;
}
})
</script>
</head>
<body>
<table id="employeeTable">
<tr>
<th>Name</th>
<th>Email</th>
<th>Salary</th>
<th> </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>
CSS样式操作
| 函数 | 作用 |
|---|---|
| addClass() | 添加样式 |
| removeClass() | 删除样式,不添加参数时,默认移除所有样式 |
| toggleClass() | 有就删除,没有就添加样式。 |
| offset() | 获取和设置元素的坐标。 |
jQuery动画
基本动画
| 函数 | 作用 |
|---|---|
| show() | 将隐藏的元素显示 |
| hide() | 将可见的元素隐藏。 |
| toggle() | 可见就隐藏,不可见就显示。 |
以上动画方法都可以添加参数。
1、第一个参数是动画 执行的时长,以毫秒为单位
2、第二个参数是动画的回调函数 (动画完成后自动调用的函数)
//以show()为例,其它方法同理
$("#div1").show(2000,function () {
alert("show finish");
})
淡入淡出动画
基本动画
| 函数 | 作用 |
|---|---|
| fadeIn() | 淡入(慢慢可见) |
| fadeOut() | 淡出(慢慢消失) |
| fadeTo() | 在指定时长内慢慢的将透明度修改到指定的值。0 透明,1 完成可见,0.5 半透明 |
| fadeToggle() | 淡入/淡出 切换 |
//fadeTo()在指定时间内淡化到指定透明度
$("#btn6").click(function(){
$("#div1").fadeTo(1000,0.3,function () {
alert("finish")
})
});
//fadeToggle()淡化切换
$("#btn7").click(function(){
$("#div1").fadeToggle(1500);
});
练习:品牌展示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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")) {
$('div div').removeClass();
$('div div').addClass('showmore');
$('div div a span').text('显示全部品牌');
$("li:contains('明基')").removeClass('promoted');
}else{
$('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>
jQuery事件操作
//原生加载
window.onloiad = function(){
}
//jQuery加载
$(function(){
});
触发时间:
1、jQuery 的页面加载完成之后是浏览器的内核解析完页面的标签创建好 DOM 对象之后就会马上执行。
2、原生 js 的页面加载完成之后,除了要等浏览器内核解析完标签创建好 DOM 对象,还要等标签显示时需要的内容加载完成。
触发顺序:
1、jQuery 页面加载完成之后先执行
2、原生 js 的页面加载完成之后
执行次数
1、原生 js 的页面加载完成之后,只会执行最后一次的赋值函数。
2、jQuery 的页面加载完成之后,会把注册的 function 函数按照顺序全部执行。
jQuery中其它的处理方法
| 函数 | 作用 |
|---|---|
| click() | 它可以绑定单击事件,以及触发单击事件 |
| mouseover() | 鼠标移入事件 |
| mouseout() | 鼠标移出事件 |
| bind() | 可以给元素一次性绑定一个或多个事件。 |
| one() | 使用上跟 bind 一样。但是 one 方法绑定的事件只会响应一次。 |
| unbind() | 跟 bind 方法相反的操作,解除事件的绑定 |
| live() | 也是用来绑定事件。它可以用来绑定选择器匹配的所有元素的事件。哪怕这个元素是后面动态创建出来的也有效 |
//使用bind绑定多个事件
$("h5").bind("click mouseover mouseout",function () {
console.log("已bind");
})
$('<h5 class="head">什么是jQuery?</h5>').appendTo($("#panel"));
//使用live绑定事件,新创建的元素也有效
$("h5").live("click",function () {
console.log("已live");
})
事件的冒泡
事件的冒泡是指,父子元素同时监听同一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去响应。
在子元素的事件函数体内中添加return false,可以阻止事件的冒泡传递
javaScript事件对象
事件对象,是封装有触发的事件信息的一个 javascript 对象。
//原生javaScript对象获取
window.onload = function () {
document.getElementById("areaDiv").onclick = function (event) {
console.log(event);
}
}
//jQuery获取事件对象
$(function () {
$("#areaDiv").click(function (event) {
console.log(event);
});
});
在给元素绑定事件的时候,在事件的 function( event ) 参数列表中添加一个参数,这个参数名,我们习惯取名为 event。
这个 event 就是 javascript 传递参事件处理函数的事件对象。
//使用 bind 同时对多个事件绑定同一个函数
$("#areaDiv").bind("mouseover mouseout",function (event) {
if (event.type == "mouseover") {
console.log(" 鼠标移入");
} else if (event.type == "mouseout") {
console.log(" 鼠标移出");
}
});
练习:图片跟随
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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 + 10,
top: event.pageY + 10
})
}
})
});
</script>
</head>
<body>
<img id="small" src="img/small.jpg"/>
<div id="showBig">
<img src="img/big.jpg">
</div>
</body>
</html>

6万+

被折叠的 条评论
为什么被折叠?



