一、jQuery 介绍
jQuery 就是 JavaScript 和查询(Query),它就是
辅助 JavaScript 开发的 js 类库
二、jQuery 初体验
使用 jQuery 给一个按钮绑定单击事件
<!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">
// window.onload = function () {
// var btnObj = document.getElementById("btnId");
// // alert(btnObj);//[object HTMLButtonElement] ====>>> dom 对象
// btnObj.onclick = function () {
// alert("js 原生的单击事件");
// }
// }
$(function () { // 表示页面加载完成 之后,相当 window.onload = function () {}
var $btnObj = $("#btnId"); // 表示按 id 查询标签对象
$btnObj.click(function () { // 绑定单击事件
alert("jQuery 的单击事件");
});
});
</script>
</head>
<body>
<button id="btnId">SayHello</button>
</body>
</html>
小结:
① 使用 jQuery 必须引入 jQuery 库
② jQuery 中的 $ 是一个函数
③ 通过使用 jQuery 查询到标签对象,使用
标签对象 .click(function(){});
三、jQuery 核心函数
$ 是 jQuery 的核心函数,能完成 jQuery 的很多
功能,$() 就是调用 $ 这个函数
表示页面加载完成之后,相当于window.onload = function(){}
会对我们 创建 这个 html 标签对象
$(“#id 属性值”);id 选择器,根据 id 查询 标签对象$(“标签名”);标签名选择器,根据指定的 标签名查询 标签对象$(“.class 属性值”);类型选择器,可以根据 class 属性查询 标签对象
会把这个 dom 对象 转换 为 jQuery 对象
四、jQuery 对象和 dom 对象
1. Dom 对象
① 通过 getElementBy Id () 查询出来的标签对象是 Dom 对象② 通过 getElementsBy Name () 查询出来的标签对象是 Dom 对象③ 通过 getElementsBy TagName () 查询出来的标签对象是 Dom 对象④ 通过 create Element() 方法创建的对象,是Dom 对象
① 通过 JQuery 提供的 API 创建 的对象,是JQuery 对象② 通过 JQuery 包装 的 Dom 对象,也是JQuery 对象③ 通过 JQuery 提供的 API 查询 到的对象,是 JQuery 对象
3. jQuery 对象的本质是:
jQuery 对象是 dom 对象的数组 + jQuery 提供的
一系列功能函数
4. jQuery 对象和 Dom 对象使用区别:
jQuery 对象不能使用 Dom 对象的属性和方法
Dom 对象也不能使用 jQuery 对象的属性和方法
5. Dom 对象和 jQuery 对象互转
(1) dom 对象转化为 jQuery 对象
① 先有 DOM 对象② $((DOM 对象) 就可以转换成为 jQuery 对象
(2) jQuery 对象转化为 dom 对象
① 先有 jQuery 对象② jQuery 对象[下标] 取出相应的 DOM 对象
五、jQuery 选择器
1. 基本选择器
#id 选择器:根据 id 查找标签对象
.class 选择器:根据 class 查找标签对象
element 选择器:根据标签名查找标签对象
* 选择器:表示任意的,所有的元素
selector 1,selector 2 组合选择器:合并选择器 1,
选择器 2 的结果并返回
p.myClass
表示标签名必须是 p 标签,而且 class 类型还要是
myClass
2. 层级选择器
ancestor descendant 后代 选择器 : 在给定的祖先元素下匹配所有的后代元素parent > child 子元素 选择器: 在给定的父元素下匹配所有的子元素prev + next 相邻元素 选择器: 匹配所有紧接在 prev元素后的 next 元素prev ~ sibings 之后的 兄弟元素 选择器: 匹配 prev 元素之后的所有 siblings 元素
3. 过滤选择器
(1) 基本过滤器:
:first 获取 第一个 元素:last 获取 最后 个元素:not(selector) 去除所有与给定选择器匹配的元素:even 匹配所有索引值为 偶数 的元素,从0 开始计数:odd 匹配所有索引值为 奇数 的元素,从0 开始计数:eq(index) 匹配一个 给定索引值 的元素:gt(index) 匹配所有 大于 给定索引值的元素:lt(index) 匹配所有 小于 给定索引值的元素:header 匹配如 h1, h2, h3 之类的标题元素:animated 匹配所有正在执行动画效果的元素
(2) 内容过滤器
:contains(text) 匹配包含给定 文本 的元素:empty 匹配所有 不包含 子元素 或者 文本的 空元素:parent 匹配含有子元素或者文本的元素:has(selector) 匹配含有选择器所匹配的元素的元素
(3) 属性过滤器
[attribute] 匹配包含 给定属性 的元素[attribute=value] 匹配给定的属性是 某个特定值 的元素[attribute!=value] 匹配所有 不含有 指定的属性,或者属性 不等于 特定值的元素[attribute^=value] 匹配给定的属性是以某些值开始 的元素[attribute$=value] 匹配给定的属性是以某些值 结尾 的元素[attribute*=value] 匹配给定的属性是以包含某些值的元素[attrSel1][attrSel2][attrSelN] 复合属性选择器 ,需要 同时满足多个条件时使用
(4) 表单过滤器
:input 匹配所有 input, textarea, select和 button 元素:text 匹配所有 文本 输入框:password 匹配所有的 密码 输入框:radio 匹配所有的 单选 框:checkbox 匹配所有的 复选 框:submit 匹配所有提交按钮:image 匹配所有 img 标签:reset 匹配所有重置按钮:button 匹配所有 input type=button <button>按钮:file 匹配所有 input type=file 文件上传:hidden 匹配所有不可见元素 display:none 或input type=hidden
(5) 表单对象属性过滤器
:enabled 匹配所有 可用 元素:disabled 匹配所有不可用元素:checked 匹配所有选中的 单选,复选 ,和下拉列表中选中 的 option 标签对象:selected 匹配所有选中的 option
六、jQuery 元素筛选
元素名称 | 作用 | 功能 |
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 一样
|
attr()
|
可以设置和获取属性的值,不推荐操作checked、readOnly、selected、disabled等
|
attr方法还可以操作非标准的属性。比如自定义属性:abc,bbj
|
prop()
|
可以设置和获取属性的值,只推荐操作checked、readOnly、selected、disabled等等
|
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
/*
// 批量操作单选
$(":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"]
);
});
</script>
</head>
<body>
<body>
单选:
<input name="radio" type="radio" value="radio1" />radio1
<input name="radio" type="radio" value="radio2" />radio2
<br/>
多选:
<input name="checkbox" type="checkbox" value="checkbox1" />checkbox1
<input name="checkbox" type="checkbox" value="checkbox2" />checkbox2
<input name="checkbox" type="checkbox" value="checkbox3" />checkbox3
<br/>
下拉多选 :
<select id="multiple" multiple="multiple" size="4">
<option value="mul1">mul1</option>
<option value="mul2">mul2</option>
<option value="mul3">mul3</option>
<option value="mul4">mul4</option>
</select>
<br/>
下拉单选 :
<select id="single">
<option value="sin1">sin1</option>
<option value="sin2">sin2</option>
<option value="sin3">sin3</option>
</select>
</body>
</body>
</html>
八、DOM 的增删改
1. 内部插入
appendTo()
|
a.appendTo(b)
|
把
a
插入到
b
子元素末尾,
成为最后一个子元素
|
prependTo()
|
a.prependTo(b)
|
把
a
插到
b
所有子元素前面,成为第一个子元素
|
2. 外部插入
insertAfter()
|
a.insertAfter(b)
|
得到
ba
|
insertBefore()
|
a.insertBefore(b)
|
得到
ab
|
3. 替换
replaceWith()
|
a.replaceWith(b)
|
用 b 替换掉 a
|
replaceAll()
|
a.replaceAll(b)
|
用
a
替换掉所有
b
|
4. 删除
remove()
|
a.remove();
|
删除 a
标签
|
empty()
|
a.empty();
|
清空
a
标签里的内容
|
九、CSS 样式操作
addClass() 添加样式removeClass() 删除样式toggleClass() 有就删除,没有就添加样式offset() 获取 和 设置 元素的 坐标
十、jQuery 动画
1. 基本动画
show() 将隐藏的元素显示hide() 将可见的元素隐藏。toggle() 可见就隐藏,不可见就显示
以上动画方法都可以添加参数:
① 第一个参数是 动画执行的时长 ,以 毫秒 为单位② 第二个参数是动画的 回调函数 (动画完成后自动调用的函数)
2. 淡入淡出动画
fadeIn() 淡入(慢慢可见)fadeOut() 淡出(慢慢消失)fadeTo() 在指定时长内慢慢的将透明度修改到指定的值0 透明,1 完成可见,0.5 半透明fadeToggle() 淡入/淡出 切换
十一、jQuery 事件操作
① jQuery 的页面加载完成之后是浏览器的内核解析完页面的标签 创建好 DOM 对象 之后 就会马上执行② 原生 js 的页面加载完成之后, 除了 要等浏览器内核解析完标签 创建好 DOM 对象, 还要等 标签显示时需要的内容 加载完成
(2) 触发的顺序
① jQuery 页面加载完成之后 先执行② 原生 js 的页面加载完成之后
(3) 执行的次数
① 原生 js 的页面加载完成之后, 只会执行最后一次 的 赋值函数② jQuery 的页面加载完成之后是 全部把注册的function 函数 , 依次顺序全部执行
2. jQuery 中其他的事件处理方法
click() 可以绑定 单击 事件,以及触发单击事件mouseover() 鼠标 移入 事件mouseout() 鼠标移出事件bind() 可以给元素一次性 绑定一个或多个事件one() 使用上跟 bind 一样,但是one 方法绑定的事件 只会响应一次unbind() 跟 bind 方法相反的操作, 解除 事件的绑定live() 也是用来绑定事件,它可以用来 绑定选择器匹配的所有元素的事件, 哪怕这个元素是 后面动态创建出来的也有效
3. 事件的冒泡
事件的冒泡是指父子元素同时监听同一个事件,当触发
子元素的事件的时候,同一个事件也被传递到了父元素
的事件里去响应
在子元素事件函数体内,ruturn false;可以阻止事件的
冒泡传递
4. JavaScript 事件对象
事件对象是封装有触发的事件信息的一个 JavaScript 对象
在给元素绑定事件的时候,在事件的 function( event )参数列表中 添加一个参数 ,这个参数名,我们习惯取名为 event这个 event 就是 javascript 传递参事件处理函数的事件对象
比如:
// ① 原生 JavaScript 获取事件对象
window.onload = function () {
document.getElementById("areaDiv").onclick = function (event) {
console.log(event);
}
}
// ② jQuery 代码获取事件对象
$(function () {
$("#areaDiv").click(function (event) {
console.log(event);
});
});
// ③ 使用 bind 同时对多个事件绑定同一个函数
$("#areaDiv").bind("mouseover mouseout",function (event) {
if (event.type == "mouseover") {
console.log("鼠标移入");
} else if (event.type == "mouseout") {
console.log("鼠标移出");
}
});