了解 jQuery
+ 是一个前端类库(方法库,工具库)
=> jQuery 里面 95% 以上都是方法
+ 有人把 js 里面各种 DOM 操作都给你封装好了
jQuery 的中文网站
+ http://jquery.cuishifeng.cn/
jQuery 的使用
+ 分成下载和使用 下载后,在页面里引入一个 jquery.js或jqery.min.js 即可
当 jQuery 文件被引入以后
+ 我们的全局就会多了两个变量
+ jQuery 向全局添加了两个名字
=> $
=> jQuery
+ 这两个名字无任何区别
jQuery 的优点
+无所不能的选择器
+无处不在的隐式迭代
+无与伦比的链式编程
+jQuery 号称全兼容
jQuery 的选择器
+ 选择器就是用来帮我们获取 DOM 元素的方法
$('div') 通过标签名获取元素
$('.box') 通过类名获取元素
$('#box') 通过id名获取元素
还有 $('ul li'), $('ul>li:nth-child(n)')、等等 n可以为数字、odd、even
注:不管使用哪一种选择器,获取到的都是一个元素集合,只有id选择器里面可能有一个元素
特殊选择器
1. :first 获取第一个
2. :last 获取最后一个
3. :eq(n) 获取索引为n的元素
4. :odd 获取所有索引为 奇数 的
5. :even 获取索引为 偶数 的
jQuery 的筛选器
+ 用在 jQuery 选择的元素集合的后面
+ 都是方法,为了对已经选择的元素进行二次筛选
筛选器:
1. first() 筛选出来一个元素集合里面的第一个
2. last() 筛选出来一个元素集合里面的最后一个
3. eq(n) 筛选出来一个元素集合里面索引为 n 的那一个
4. next() 筛选出元素的下一个兄弟元素
5. nextAll()筛选出元素后面的所有兄弟元素
6. nextUntil(选择器)
-如果后无参数,筛选出元素后面的所有兄弟元素
-如果有参数,筛选出元素后面所有的兄弟元素直到选择器元素为止,不包含选择器元素
7. prev() 筛选出元素的上一个兄弟元素
8. prevAll(选择器)筛选出元素的上面的所有兄弟元素
9. prevUntil(选择器)
-如果后无参数,筛选出元素上面的所有兄弟元素
-如果后有参数,筛选出元素上面所有的兄弟元素直到选择器元素为止,不包含选择器元素
10. parent() 拿到元素的父元素
11. parents()拿到所有祖先元素,直到 html 元素
12. parentsUntil(选择器)
-如果后无参数,拿到元素所有祖先元素
-如果后有参数,筛选出元素所有祖先元素直到选择器元素为止,不包含选择器元素
13. children(选择器)
-如果后无参数,筛选出所有子级元素
-如果后有参数,筛选出所有子元素里面符合条件选择器条件的元素
14. siblings(选择器)
-如果后无参数,筛选出所有兄弟元素
-如果后有参数,筛选出所有兄弟元素里面符合条件选择器条件的元素
15. find(选择器)
-在元素集合里面的每一个元素中,查找后代元素
-在一个元素的后代元素中查找对应的选择器的元素
16. index()
-获取到元素的索引位置
-不是元素集合里面的第几个
-找到他是该父元素下的第几个元素
-拿到的是一个数字
jQuery 操作文本内容
+ html()
-一个读写的方法
-不传参数的时候,就是获取元素内部的超文本内容
-获取的时候只能获取元素集合里面的第一个元素的超文本内容
-传一个参数的时候,就是设置元素集合里所有元素内的超文本内容
+ text()
-一个读写的方法
-不传参数的时候,就是获取元素集合内所有内部的文本内容
-传一个参数的时候,就是设置元素集合里所有元素内的文本内容
+ val()
-一个读写的方法,操作 Input 标签
-不传参数的时候就是获取元素集合里面第一个标签的 value 值
-传一个参数的时候就是设置所有元素集合里面的标签的 value 值
jQuery 操作元素类名
+ addClass() 添加类名
+ removeClass() 移除类名
+ toggleClass() 切换类名(有就删,无就加)
+ hasClass() 判断有没有某一个类名
jQuery 操作元素属性
+ attr()
-是一个读写的方法
-attr(要读取得属性名):传递一个参数得时候是读取
-attr(属性名,属性值):传递两个参数得时候就是设置
-只获取元素集合内第一个元素的属性
+ removeAttr()
-专门用来移除属性的,针对元素集合内所有元素
注:所有属性都会显示在标签上(原生属性和自定义属性),不管属性值是什么类型,都会变为字符串
+ prop() 和 removeProp() 同 attr 的一套方法,使用方式一样
注:设置的时候,原生属性会显示在标签上,非原生属性,不会显示在标签上,会存储在DOM对象身上。
存储的是什么数据类型,获取到就是什么数据类型
无法删除原生属性,如:(id,class,style)
+ data()
- 一个读写的方法
- 创建的是自定义属性
-传一个参数是读取,两参数是设置
+ removeData()
- 删除 data 设置的属性
注: 和元素的元素属性没有关系,就是在元素身上开辟一个地方,存储一些数据,不会显示在标签上
存储的是什么类型,拿到的就是什么类型
jQuery 操作元素样式
+ css()
- 一个读写的属性
- 不同的操作需要不同的参数
- css(要获取的样式名)
=> 获取元素样式,行内和非行内都能获取
- css(样式名,样式值)
=> 设置元素的样式
=> 值得位置如果不带单位,默认为 px
- css({
样式名:样式值,
样式名:样式值,
...
})
=> 批量设置元素的样式
jQuery 绑定事件
+ 给元素绑定一个事件
+ on() 方法是专门用来绑定事件的
=> jQuery 里面通用的事件绑定方式
=> 通过传递不同的参数来达到不同的效果
on 方法的各种参数描述
1. on('事件类型',事件处理函数)
=> 给元素集合内所有元素绑定一个事件
2. on('事件类型','事件委托',事件处理函数)
=> 把 事件委托 位置的元素的事件 委托给了前面的元素集合
3. on('事件类型','复杂数据类型',事件处理函数)
=> 给每一个元素绑定一个事件,复杂数据类型是触发事件的时候传递的参数,在事件对象里面获取(e)
4. on('事件类型','事件委托','任意数据类型',事件处理函数)
=> 做一个事件委托的形式,第三个参数位置的数据,是触发事件的时候,可以传递进去的数据
5. on(对象)
=> 给一个函数绑定多个事件的方式
+ one() 方法是专门通过绑定一个只能执行一次的方法
=> 传递的参数个数和意义和 on 方法一模一样
=> 绑定上的事件只能执行一次
+ off() 方法是专门用来解绑一个元素事件的
=> 有两种使用方式
=> off('事件类型') 给该事件类型所有事件处理函数解绑
=> off('事件类型',事件处理函数名) 解绑指定事件处理函数
=> on 和 one 绑定的事件都可以移除
+ trigger() 方法是专门用来触发事件的方法
=> 不通过点击,通过代码就能把事件触发了
=> trigger('事件类型') 把该元素的事件给触发了
+ 常用事件
=> jQuery 把一些常用的事件直接做成了函数,如:click,mouseover,... ,直接使用就可以了
=> 使用click举一个例子
- click(事件处理函数)
- click(参数,事件处理函数) 参数:触发事件时传入事件对象里面的数据
+ hover()
=> jQuery 里面唯一一个很特殊的事件,表示一个鼠标悬停的动作
=> hover(鼠标移入的时候触发,鼠标移出的时候触发) 如果只写一个函数参数,那么这两次都会触发这个函数
jQuery 的节点操作
+ 创建节点 对应原生js中createElement()
+ 只有一个方法
+ $() 或 jQuery()
-() 里面传递一个 html 格式文本的时候就是创建节点(DOM 元素)
-() 里面传递一个选择器的时候,就是获取页面中的 DOM 元素
+ 插入节点 对应原生js中appendChild()
+ 内部插入(父子关系)
1. append()
=> 页面元素.append(要插入的元素)
=> 放在页面元素的子元素位置,放在末尾
2. appendTo()
=> 要插入元素.append(页面元素)
=> 跟上面append()用法相同,只是主语不同
3. prepend()
=> 页面元素.prepend(要插入的元素)
=> 放在页面元素的子元素位置,放在最前
4. perpendTo()
=> 要插入元素.prepend(页面元素)
=> 跟上面prepend()用法相同,只是主语不同
+ 外部插入(兄弟关系)
1. after()
=> 页面元素.after(要插入的元素)
=> 放在页面元素的下一个兄弟元素位置
2. insertAfter()
=> 要插入元素.insertAfter(页面元素)
=> 跟上面after()用法相同,只是主语不同
3. before()
=> 页面元素.before(要插入的元素)
=> 放在页面元素的上一个兄弟元素位置
4. insertBefore()
=> 要插入元素.insertBefore(页面元素)
=> 跟上面before()用法相同,只是主语不同
+ 删除节点 对应原生js中removeChild()
1. empty() 空
=> 页面元素.empty()
=> 把页面元素变成一个空标签
2. remove() 移除
=> 删除自己
+ 替换节点 对应原生js中replaceChild()
- 把页面中某一个节点替换成其他节点
1. replaceWith()
=> 页面元素.replaceWith(替换元素)
=> 用替换元素把页面元素替换掉
2. replaceAll()
=> 替换元素.replaceAll(页面元素)
=> 和replaceWith()用法一样,只是换了主语
+ 克隆节点 对应原生js中cloneNode()
- 复制一份一模一样的元素
1.clone()
=> 专门用来克隆节点的
=> 页面元素.clone()
=> 返回值:就是克隆出来的元素结合,集合里面有一个元素,就是克隆好的节点
=> 会克隆子节点
=> 接收两个参数
- clone(布尔值,布尔值)
- 第一个参数:默认值是 false,表示是否克隆元素的事件
- 第二个参数:默认值是 false,表示是否克隆子节点的事件
-注:当第一个参数为false时,第二个参数没有意义
jQuery 获取元素尺寸
+ 尺寸:元素占地面积
1. width() 和 height()
=> 获取元素的 content 区域的尺寸,不管盒模型如何
2. innerWidth() 和 innerHeight()
=> 获取元素的 content + padding 区域的尺寸
3. outerWidth() 和 outerHeight()
=> 获取元素 content + padding + border 区域的尺寸
4. outerWidth(true) 和 outerHeight(true)
=> 获取元素 content + padding + border + margin 区域的尺寸
jQuery 获取元素位置
- 获取元素相对于谁的位置关系
1. offset() 偏移量
=> 是一个读写得属性
=> 读取
-> 不传递参数就是读取
-> 读到的元素相对于页面的位置关系
-> 返回值是一个对象 {left:xxx,top:xxx}
=> 写入
-> 传递一个对象就是写入 {left:xxx,top:xxx}
-> 绝对写入(不管原来位置如何,以修改后的为标准)
2. position() 定位
=> 只读的方法
-元素相对于定位父级的位置关系
-得到的也是一个对象 {left:xxx,top:xxx}
jQuery 获取卷去的尺寸
+ scrollTop()
=> 原生 js 里面 document.documentElement.scrollTop
=> 读写的方法
=> 不传递参数的时候就是设置卷去的高度
=> 传递一个参数的时候就是设置卷去的高度
+ scrollLeft()
=> 原生 js 里面 document.documentElement.scrollLeft
=> 读写的方法
=> 不传递参数的时候就是设置卷去的宽度
=> 传递一个参数的时候就是设置卷去的宽度
注:设置的时候不会滚动回去而是直接跳回到设置的高度(宽度)
jQuery 的方法
+ ready 的方法
-类似于 window.onload 事件
-> 会在页面所有资源加载完毕后执行
-ready()
-> 会在页面 html 结构加载完毕后执行
-也叫做jQuery 的入口函数
-有一个简写函数
-> $(function(){})
+ each() 方法
-类似于 forEach() 方法
-jQuery 的元素集合,是一个 jQuery 数组,不是 数组,不能用数组的各种方法
jQuery 里面的动画 -> (都为元素集合的方法)
+ 让元素出现不同的移动,改变
=> transition 过渡动画
=> animation 帧动画
+ 标准动画
- 参数全都是选填
1. show() 显示
=> 语法:show(时间,运动曲线,运动结束的函数)
2. hide() 隐藏
=> 语法:hide(时间,运动曲线,运动结束的函数)
2. toggle() 切换(如果是显示就隐藏,如果是隐藏就显示)
=> 语法:toggle(时间,运动曲线,运动结束的函数)
+ 折叠动画
- 参数全都是选填
1. slideDown() 下滑显示
=> 语法:slideDown(时间,运动曲线,运动结束的函数)
2. slideUp() 上滑隐藏
=> 语法:slideUp(时间,运动曲线,运动结束的函数)
3. slideToggle() 切换滑动显示和隐藏
=> 语法:slideToggle(时间,运动曲线,运动结束的函数)
+ 渐隐渐显动画
- 前三个语法同上,参数都有默认值
1. fadeIn() 渐渐的显示
2. fadeOut() 渐渐的消失
3. fadeToggle() 渐渐的切换显示和消失
4. fadeTo()
=> 语法:slideToggle(时间,指定透明度(eg:0.6),运动曲线,运动结束的函数)
+ 综合动画
1. animate()
=> 基本上大部分的css样式都可以动画
=> transform 不行,颜色不行
=> 语法:animate({},时间,运动曲线,运动结束函数)
- {}里面就是你要运动的css样式,例如 height,left,borderRadius
+ 停止动画
-让当前的动画结束
-因为jQuery的动画你一直点,他就一直触发,如果你点击10次,它就会执行10次,直至10次全部完毕才结束
1. stop() 运动到哪里,停止到哪里
2. finish() 运动到哪里,停止到动画完成的位置