一、初识jQuery
课前须知: 学习jQuery前必须先掌握JavaScript
jQuery虽然属于前端技术, 但是对于后端人员(诸如Java、PHP等,也需要掌握)
1. jQuery是什么?
- jQuery是一款优秀的JavaScript库,从命名可以看出jQuery最主要的用途是用来做查询(jQuery=js+Query).
- 在jQuery官方Logo下方还有一个副标题(write less, do more), 体现了jQuery除了查询以外,还能让我们对HTML文档遍历和操作、事件处理、动画以及Ajax变得更加简单
- 体验jQuery
- 原生JS设置背景(先不要求看懂代码,先看看谁更爽)
1 |
|
- 使用jQuery设置背景
1 |
|
2. 为什么要使用jQuery?
- 强大的选择器: 方便快速查找DOM元素
- 如上面实例所展示一样,通过jQuery查找DOM元素要比原生js快捷很多
- jQuery允许开发者使用CSS1-CSS3几乎所有的选择器,以及jQuery独创的选择器
- 支持链式调用: 可以通过.不断调用jQuery对象的方法
- 如上面实例所展示一样,jQuery可以通过.(点).不断调用jQuery对象的方法,而原生JavaScript则不一定
1 |
|
- 隐式遍历(迭代): 一次操作多个元素
1 |
|
- 读写合一: 读数据/写数据使用是一个函数
1 |
|
- 事件处理
- DOM操作(C增U改D删)
- 样式操作
- 动画
- 丰富的插件支持
- 浏览器兼容(前端开发者痛点)
1.x:兼容IE678,但相对其它版本文件较大,官方只做BUG维护,功能不再新增,最终版本:1.12.4 (2016年5月20日).
2.x:不兼容IE678,相对1.x文件较小,官方只做BUG维护,功能不再新增,最终版本:2.2.4 (2016年5月20日)
3.x:不兼容IE678,只支持最新的浏览器,很多老的jQuery插件不支持这个版本,相对1.x文件较小,提供不包含Ajax/动画API版本。
应该选择几点几版本jQuery?
- 查看百度网页源码使用1.x
- 查看腾讯网页源码使用1.x
- 查看京东网页源码使用1.x
- 综上所述学习1.x,选择1.x
应该使用开发版还是生产版?
- 开发版: 所有代码没有经过压缩,体积更大(200-300KB)
- 生产版:所有代码经过压缩,提及更小(30-40KB)
- 初学者为了更好的理解jQuery编码时使用开发板,项目上线时为了提升访问速度使用生产版
……
3. 如何使用jQuery?
- 下载jQuery库
- 下载地址: http://code.jquery.com/
- 引入下载的jQuery库
1 |
|
- 编写jQuery代码
1 |
|
二、入口函数
1. jQuery与JavaScript加载模式对比
- 多个window.onload只会执行一次, 后面的会覆盖前面的
- 多个$(document).ready()会执行多次,后面的不会覆盖前面的
- 不会覆盖的本质(了解,后面jQuery原理会详细讲解)
- jQuery框架本质是一个闭包,每次执行我们都会给ready函数传递一个新的函数,不同函数内部的数据不会相互干扰
1 |
|
window.onload | $(document).ready() | |
---|---|---|
执行时机 | 必须等待网页全部加载完毕(包括图片等),然后再执行包裹代码 | 只需要等待网页中的DOM结构加载完毕,就能执行包裹的代码 |
执行次数 | 只能执行一次,如果有第二次,那么第一次的执行会被覆盖 | 可以执行多次,第N次都不会被上 一次覆盖 |
简写方案 | 无 | $(function () { }); |
- 为什么我们能访问$符号?
- 因为$符号jQuery框架对外暴露的一个全局变量
- JavaScript中如何定义一个全局变量?
- 所有全局变量是 window 对象的属性
1 | function test () { |
- 所以jQuery框架源码实现
1 | window.jQuery = window.$ = jQuery; |
- 所以想要使用jQuery框架只有两种方式,一种是通过$,一种是通过jQuery
- jQuery入口函数的其它编写方式如下
1 |
|
2. 解决$符号冲突问题
- 为什么是window.jQuery = window.$ = jQuery;,而不是window.jQuery = jQuery;
- jQuery框架之所以提供了jQuery访问还提供$访问,就是为了提升开发者的编码效率
- $符号冲突怎么办?
- 很多js的框架都提供了类似jQuery这样的便捷访问方式,所以很有可能某一天我们在使用多个框架的时,多个框架作者提供的便捷访问方式冲突(A框架通过$访问,B框架也通过$访问)
- 释放$使用权
- 当便捷访问符号发生冲突时,我们可以释放$使用权, 释放之后只能使用jQuery
- 自定义便捷访问符号
- 当便捷访问符号发生冲突时,我们可以自定义便捷访问符号
1 |
|
三、核心函数和静态方法
1. jQuery核心函数
- 从jQuery文档中可以看出,jQuery核心函数一共3大类4小类
- jQuery(callback)
- 当DOM加载完成后执行传入的回调函数
- jQuery([sel,[context]])
- 接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素,并包装成jQuery对象
- 原生JS对象和jQuery对象相互转换
1 |
|
Tips:为了方便开发者之间沟通和阅读,一般情况下所有jQuery操作相关的变量前面加上$
- jQuery(html,[ownerDoc])
- 根据 HTML 标记字符串,动态创建DOM元素
1 |
|
2. jQuery对象
- jQuery对象的本质是什么?
- jQuery对象的本质是一个伪数组
- 什么是伪数组?
- 有0到length-1的属性
- 并且有length属性
1 |
|
3. jQuery静态方法
- 什么是静态方法?
- 静态方法对应的是对象方法,对象方法用实例对象调用,而静态方法用类名调用
1 |
|
- jQuery.holdReady(hold)
- 暂停或者恢复jQuery.ready()事件
- 传入true或false
1 |
|
- $.each(object,[callback])
- 遍历对象或数组
- 优点统一遍历对象和数组的方式
- 回调参数的顺序更符合我们的思维模式
1 |
|
- $.map(arr|obj,callback)
- 遍历对象或数组,将回调函数的返回值组成一个新的数组返回
1 |
|
- $.trim(str)
- 去掉字符串起始和结尾的空格
- $.isArray(obj)
- 判断是否是数组
- $.isFunction(obj)
- 判断是否是函数
- $.isWindow(obj)
- 判断是否是window对象
1 |
|
补充知识
使用IDE软件的快捷键方便引用jquery文件
Settings,Editor,Live Templates,在右边找到HTML/XML,在Abbreviation中输入字母作为快捷键,在Template text中输入要引用的jquery代码,左下角设置成HTML text,点击应用,以后输入这个字母后按tab键就会自动出来相应的jquery代码使用快捷键打开浏览器
Settings,Appearance&Behavior,Keymap,搜索“default”,在Other的Open in deafult browser中鼠标右键,Add Keyboard Shortcut,给打开默认浏览器设置一个快捷键。以后在html中打开浏览器的话就不用鼠标点击了,直接按快捷键即可。
四、选择器
1. 基础选择器
- 视频参考第十章-CSS选择器
选择器 | 名称 | 描述 | 返回 | 示例 |
---|---|---|---|---|
#id | id选择器 | 根据给定的id匹配一个元素 | 单个元素 | $(“#box”);选取id为box元素 |
.class | 类选择器 | 根据给定的类名匹配元素 | 集合元素 | $(“.box”);选取所有类名为box元素 |
element | 元素选择器 | 根据给定的元素名称匹配元素 | 集合元素 | $(“p”);选取所有 元素 |
* | 通配符选择器 | 匹配所有元素 | 集合元素 | $(“*”);选取所有元素 |
selector1,selector2,selectorN | 并集选择器 | 将所有选择器匹配到的元素合并后一起返回 | 集合元素 | $(“div,p,.box”);选取所有 元素,所有 元素和所有类名为box元素 |
2. 层次选择器
- 视频参考第十章-CSS选择器
选择器 | 名称 | 描述 | 返回 | 示例 |
---|---|---|---|---|
$(“ancestor descendant”) | 后代选择器 | 选取ancestor元素的所有descendant后代标签(不光是儿子,包括孙子/重孙子等) | 集合元素 | $(“div span”);选取 元素里所有的元素 |
$(“parent > child”) | 子元素选择器 | 找到选取parent 元素中所有直接子元素child(只有儿子,不包括孙子/重孙子等) | 集合元素 | $(“div>span”);选取 元素下元素名称是的子元素 |
$(“prev + next”) | 相邻兄弟选择器 | 选取prev元素后面紧跟的那个next元素 | 集合元素 | $(“.one+div”);选取类名为one的下一个同级的 元素 |
$(“prev ~ siblings”) | 通用兄弟选择器 | 选取prev元素后面的所有next元素 | 集合元素 | $(“#two~div”);选取id名为two元素后面所有同级的 元素 |
3. 序选择器
- 视频参考第十章-CSS选择器
如上内容不再一一赘述,观看第十章-CSS选择器,使用时查询文档即可
做开发是脑力活,我们需要掌握的是解决问题的方法,而不是死记硬背
4. 属性选择器
- 视频参考第十章-CSS选择器
如上内容不再一一赘述,观看第十章-CSS选择器,使用时查询文档即可
做开发是脑力活,我们需要掌握的是解决问题的方法,而不是死记硬背
5. 内容过滤选择器
选择器 | 描述 | 返回 |
---|---|---|
:empty | 选取不包含子元素或文本为空的元素 | 集合元素 |
:parent | 选取含有子元素或文本的元素 | 集合元素 |
:contains(text) | 选取含有文本内容为text的元素 | 集合元素 |
:has(selector) | 选取含有选择器所匹配的元素的元素 | 集合元素 |
- :empty
- :parent
- :contains(text)
- :has(selector)
- 和:parent区别,parent只要有子元素就会被找到,:has(selector)不仅要有子元素,而且子元素还必须满足我们的条件
1 |
|
五、属性相关
1. 属性和属性节点
- 什么是属性?
- 属性就是对象身上的变量
- 只要对象身上都可以添加属性(无论是自定义对象,还是DOM对象)
- 什么是属性节点?
- 在html中编写的所有标签,里面的属性都是属性节点
- 如果操作属性?
- 添加或修改属性(没有就会添加,有就会修改)
对象.属性名称 = 值;
对象["属性名称"] = 值;
- 获取属性
对象.属性名称
对象["属性名称"]
- 添加或修改属性(没有就会添加,有就会修改)
- 如何操作属性节点?
- 获取属性节点
DOM对象.getAttribute("属性节点名称")
- 设置属性节点
DOM对象.setAttribute("属性节点名称", "值");
- 获取属性节点
1 |
|
2. jQuery中的attr和prop方法
- attr(name|pro|key,val|fn)方法
- 用于设置或获取属性节点的值
- removeAttr(name)方法
- 用于删除指定属性节点
1 |
|
- prop(n|p|k,v|f)方法
- 用于设置或者获取元素的属性值
removeProp(name)方法
attr方法和prop方法区别
- 既然所有的DOM对象,都有一个attributes属性,而prop可以操作属性,所以也可以操作属性节点
- 官方推荐在操作属性节点时,具有 true 和 false 两个属性的属性节点,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()
- 因为如果具有 true 和 false 两个属性的属性节点,如果没有编写默认attr返回undefined,而prop返回false
1 |
|
练习
1 |
|
3. jQuery增删Class
- jQuery CSS类相关方法都是用于操作DOM对象的class属性节点的值
- addClass(class|fn)
- 给元素添加一个或多个类
- removeClass([class|fn])
- 删除元素的一个或多个类
- toggleClass(class|fn[,sw])
- 添加或删除一个类(存在就删除不存在就添加)
1 |
|
4. jQuery代码/文本/值
- html([val|fn])
- 添加或获取元素中的HTML
- text([val|fn])
- 添加或获取元素中的文本
- text方法能做的html方法都能做,所以一般使用html方法即可
- val([val|fn|arr])
- 添加或获取元素value属性的值
1 |
|
六、CSS操作
1. jQuery操作CSS样式
- css(name|pro|[,val|fn])方法
- 用于设置或获取元素CSS样式
- 格式1:DOM元素.css(“样式名称”, “值”);
- 格式2:DOM元素.css({“样式名称1”:”值1”,”样式名称2”:”值2”});
1 |
|
2. jQuery操作元素尺寸
- width([val|fn])方法
- 设置或获取元素宽度(相当于获取width属性值)
1 |
|
- height([val|fn])方法
- 设置或获取元素宽度(相当于获取height属性值)
- 用上面按钮代码自己写,工作后都得靠自己,多锻炼自学能力(如何查看文档,如何编写测试案例等)
- innerHeight()/innerWidth()
- 用上面按钮代码自己写,工作后都得靠自己,多锻炼自学能力(如何查看文档,如何编写测试案例等)
- outerHeight/outerWidth()
- 用上面按钮代码自己写,工作后都得靠自己,多锻炼自学能力(如何查看文档,如何编写测试案例等)
3. jQuery操作元素位置
- offset([coordinates])
- 获取或设置元素相对窗口的偏移位
- position()
- 获取相对于它最近的具有相对位置(position:relative或position:absolute)的父级元素的距离
1 |
|
- scrollTop([val])
- 设置或获取匹配元素相对滚动条顶部的偏移。
- scrollLeft([val])
- 用上面按钮代码自己写,工作后都得靠自己,多锻炼自学能力(如何查看文档,如何编写测试案例等)
1 |
|
七、事件处理
1. 事件绑定
- jQuery中事件绑定有两种方式
- eventName(function(){})
- 绑定对应事件名的监听, 例如:$(‘#div’).click(function(){});
- on(eventName, funcion(){})
- 通用的绑定事件监听, 例如:$(‘#div’).on(‘click’, function(){});
- eventName(function(){})
- 优缺点:
- eventName: 编码方便, 但有的事件监听不支持
- on: 编码不方便, 但更通用
- 企业开发中如何选择?
- 能用eventName就用eventName, 不能用eventName就用on
- 示例:
1 |
|
2. 事件解绑
- jQuery中可以通过off(eventName,function);解绑事件
- 示例:
1 |
|
3. 获取事件的坐标
- 当事件被触发时,系统会将事件对象(event)传递给回调函数,通过event对象我们就能获取时间的坐标
- 获取事件坐标有三种方式
- event.offsetX, event.offsetY 相对于事件元素左上角
- event.pageX, event.pageY 相对于页面的左上角
- event.clientX, event.clientY 相对于视口的左上角
- event.page和event.client区别
- 网页是可以滚动的,而视口是固定的
- 所以想获取距离可视区域坐标通过event.client
- 想获取距离网页左上角的坐标通过event.client
- 示例代码
1 | <!DOCTYPE html> |
4. 阻止事件冒泡
- 什么是事件冒泡?
- 事件冒泡是从目标元素逐级向上传播到根节点的过程
- 小明告诉爸爸他有一个女票,爸爸告诉爷爷孙子有一个女票,一级级向上传递就是事件冒泡
- 如何阻止事件冒泡?
- 多数情况下,我们希望在触发一个元素的事件处理程序时,不影响它的父元素, 此时便可以使用停止事件冒泡
1 |
|
5. 阻止事件默认行为
- 什么是默认行为?
- 网页中的元素有自己的默认行为,例如单击超链接后会跳转,点击提交表单按钮会提交
- 如何阻止事件默认行为?
- 可以使用event.preventDefault();方法阻止事件默认行为方法
1 |
|
6. 自动触发事件
- 什么是自动触发事件
- 通过代码控制事件, 不用人为点击/移入/移除等事件就能被触发
- 自动触发事件方式
- $(“selector”).trigger(“eventName”);
- 触发事件的同时会触发事件冒泡
- 触发事件的同时会触发事件默认行为
- $(“selector”).triggerHandler(“eventName”);
- 触发事件的同时不会触发事件冒泡
- 触发事件的同时不会触发事件默认行为
- $(“selector”).trigger(“eventName”);
1 |
|
7. 事件命名空间和自定义事件
- 什么是自定义事件
- 自定义事件就是自己虾XX起一个不存在的事件名称来注册事件, 然后通过这个名称还能触发对应的方法执行, 这就是传说中的自定义事件
- 自定义事件的前提条件
- 1.事件必须是通过on绑定的
- 2.事件必须通过trigger来触发
- 因为trigger方法可以自动触发对应名称的事件,所以只要事件的名称和传递给trigger的名称一致就能执行对应的事件方法
1 |
|
- 什么是事件命名空间
- 众所周知一个元素可以绑定多个相同类型的事件.企业多人协同开发中,如果多人同时给某一个元素绑定了相同类型的事件,但是事件处理的方式不同,就可能引发事件混乱
- 为了解决这个问题jQuery提出了事件命名空间的概念
- 事件命名空间主要用于区分相同类型的事件,区分不同前提条件下到底应该触发哪个人编写的事件
- 格式: “eventName.命名空间”
- 添加事件命名空间的前提条件
- 1.事件是通过on来绑定的
- 2.通过trigger触发事件
- 注意点(面试题!!!面试题!!!面试题!!!):
- 不带命名空间事件被trigger调用,会触发带命名空间事件
- 带命名空间事件被trigger调用,只会触发带命名空间事件
- 下级不带命名空间事件被trigger调用,会冒泡触发上级不带命名空间和带命名空间事件
- 下级带命名空间事件被trigger调用,不会触发上级不带命名空间事件
- 下级带命名空间事件被trigger调用,会触发上级带命名空间事件
- 示例:
1 |
|
1 |
|
8.事件委托
- 什么是事件委托
- 例如: 张三在寝室不想去食堂吃饭,那么张三可以”委托”李四帮忙带一份饭
- 例如: 张三先找房,但是对要找房的地点又不熟悉,那么张三可以”委托”中介帮忙找房
- 所以得出结论:
- 事件委托就是请其他人帮忙做我们想做的事
- 做完之后最终的结果还是会反馈到我们这里
- js中事件委托的好处
- 减少监听数量
- 添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断的与dom节点进行交互,访问dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间
- 每个监听的函数都是一个对象,是对象就会占用内存,对象越多,内存占用率就越大,自然性能就越差
- … …
- 新增元素自动有事件响应处理
- 默认情况下新增的元素无法响应新增前添加的事件
- 减少监听数量
- jQuery中如何添加事件委托
- 添加前
- $(“li”).click隐式迭代给界面上所有li都添加了click事件(监听数量众多)
- 通过$(“ul”).append新添加的li无法影响click事件
- 添加后
- 格式:$(parentSelector).delegate(childrenSelector, eventName, callback)
- $(“ul”).delegate隐式迭代所有ul添加事件(相比开始迭代li,必然ul的个数会少很多)
- 当事件被触发时,系统会自动动态查找当前是哪个li触发了事件,所以新增的li也能响应到事件
- 添加前
1 |
|
事件委托练习
点击登录按钮,出现一个登录界面(其实是个图片),登录界面右上角使用span标签定义了关闭(移除)操作,同时阻止了默认行为
1 |
|
9.移入移出事件
- mouseenter和mouseleave
- 移动到子元素不会触发事件
- mouseover和mouseout
- 移动到子元素会触发事件
- hover
- 内容监听移入和移出
- 内部实现就是调用mouseenter和mouseleave
1 |
|
10. 移入移出练习
- 电影排行榜:鼠标移动到哪一行,哪一行展开效果
1 |
|
狼性法则:要培养学生超强的学习能力,一定要培养学生对于客观世界的好奇心,用兴趣来作为他学习的老师。这样的学生在未来的人生道路上,就能不断对工作有新创建和新灵感
- Tab选项卡:鼠标移动到哪个选项卡就显示哪个选项卡对应的图片
1 |
|
- 鼠标移入到哪个序号就显示哪个序号对应图片
1 | <script type="text/javascript"> |
八、动画效果
1.显示、隐藏动画
- [show(s,[e],[fn]])
- 显示动画
内部实现原理根据当前操作的元素是块级还是行内决定, 块级内部调用display:block;,行内内部调用display:inline;
[hide(s,[e],[fn]])
隐藏动画
- 切换动画(显示变隐藏,隐藏变显示)
1 |
|
注意事项:
- show(1000, function () {};) 第一个参数单位是毫秒, 1000毫秒等于1秒
- 默认的动画时长是400毫秒
- 除了指定毫秒以外还可以指定三个预设参数 slow、normal、fast
- slow本质是600毫秒
- normal本质是400毫秒
- fast本质是200毫秒
- 其它两个方法同理可证
对联广告:页面滚动显示
1 |
|
2. 展开、收起动画
- 参数、注意事项和显示隐藏动画一模一样, 只不过动画效果不一样而已
- slideDown([s],[e],[fn])
- 展开动画
- [slideUp(s,[e],[fn]])
- 收起动画
- slideToggle([s],[e],[fn])
- 切换动画(展开变收起,收起变展开)
1 |
|
- 练习:折叠菜单
1 |
|
- 练习:下拉菜单
1 |
|
3. 淡入、淡出动画
- 参数、注意事项和显示隐藏动画一模一样, 只不过动画效果不一样而已
- fadeIn([s],[e],[fn])
- 淡入动画
- fadeOut([s],[e],[fn])
- 淡出动画
- [fadeToggle(s,[e],[fn]])
- 切换动画(显示变淡出,不显示变淡入)
- [fadeTo([s],o,[e],[fn]])
- 淡入到指定透明度动画
- 可以通过第二个参数,淡入到指定的透明度(取值范围0~1)
1 |
|
- 练习:弹窗广告
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html lang="en">
<head>
<meta charset="UTF-8">
<title>46-弹窗广告</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.ad {
position: fixed;
right: 0;
bottom: 0;
display: none;
}
.ad > span {
display: inline-block;
width: 30px;
height: 30px;
/*background: red;*/
position: absolute;
top: 0;
right: 0;
}
</style>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function () {
//1.监听span的监听事件
$('span').click(function () {
$(".ad").remove();
});
// 2.执行广告动画
// $('.ad').slideDown(1000,function () {
// $('.ad').fadeOut(1000,function () {
// $('.ad').fadeIn(1000);
// });
// });
// 链式写法
$('.ad').stop().slideDown(1000).fadeOut(1000).fadeIn(1000);
});
</script>
</head>
<body>
<div class="ad">
<img src="images/ad-pic.jpg" alt="">
<span></span>
</div>
</body>
</html>
4. 自定义动画
- 有时候jQuery中提供的集中简单的固定动画无法满足我们的需求, 所以jQuery还提供了一个自定义动画方法来满足我们复杂多变的需求
- animate(p,[s],[e],[fn])
- 每次开始运动都必须是初始位置或者初始状态,如果想在上一次位置或者状态下再次进行动画可以使用累加动画
- 同时操作多个属性,自定义动画会执行同步动画,多个被操作的属性一起执行动画
1 |
|
- 练习:图标特效
1 |
|
5. 动画队列
- 多个动画方法链式编程,会等到前面的动画执行完毕再依次执行后续动画
1 | $("div").slideDown(1000).slideUp(1000).show(1000); |
- 但是如果后面紧跟一个非动画方法则会被立即执行
1 | // 立刻变为黄色,然后再执行动画 |
- 如果想颜色再动画执行完毕之后设置, 1.使用回调 2.使用动画队列
1 | $(".one").slideDown(1000,function () { |
- 注意点:
- 动画队列方法queue()后面不能继续直接添加queue()
- 如果想继续添加必须在上一个queue()方法中next()方法
1 | $(".one").slideDown(1000).slideUp(1000).show(1000).queue(function (next) { |
6. 动画相关方法
- delay(d,[q])
- 设置动画延迟时长
- stop([c],[j])
- 停止指定元素上正在执行的动画
1 |
|
- 练习:无限循环滚动
1 |
|
九、文档处理
1. 添加节点
- 内部插入
- append(content|fn)
- appendTo(content)
- 将元素添加到指定元素内部的最后
- prepend(content|fn)
prependTo(content)
- 将元素添加到指定元素内部的最前面
外部插入
- after(content|fn)
- insertAfter(content)
- 将元素添加到指定元素外部的后面
- before(content|fn)
- insertBefore(content)
- 将元素添加到指定元素外部的前面
1 |
|
2. 删除节点
- empty()
- 删除指定元素的内容和子元素, 指定元素自身不会被删除
- remove([expr])
- 删除指定元素
- detach([expr])
- remove和detach区别
- remove删除元素后,元素上的事件会被移出
- detach删除元素后,元素上的事件会被保留
1 |
|
3. 替换节点
- replaceWith(content|fn)
- 将所有匹配的元素替换成指定的HTML或DOM元素
- replaceWith参数可以是一个DOM元素
- replaceWith参数也可以是一个代码片段
- replaceAll(selector)
- 用匹配的元素替换掉所有 selector匹配到的元素
1 |
|
4. 复制节点
- [clone(Even[,deepEven]])
- 复制一个节点
- 浅复制不会复制节点的事件
- 深复制会复制节点的事件
1 |
|
5. 包裹节点
- 都讲了这么多了, 骚年动动手, 查阅下文档, 尝试下自学这几个方法
- 编程不是死记硬背, 是学会找到解决问题的思路和自学新知识的方法