jQuery 的节点操作
jQuery 的节点操作
原生 JS 的节点操作
创建节点, 插入节点, 删除节点, 替换节点, 克隆节点
jQuery 的节点操作
创建节点, 插入节点, 删除节点, 替换节点, 克隆节点
公共基础样式部分
1. 创建节点
$(html 结构字符串)
当 $() 里面传递一个选择器的时候, 就是获取元素
当 $() 里面传递一个 html 结构字符串的时候, 就是创建元素节点
当 $() 里面传递一个 DOM 元素节点的时候, 就是转换成 jQuery 元素结合
2. 插入节点
内部插入(父子关系的插入)
2-1. append(): 父元素.append(子元素)
子元素插入到父元素内部, 放在末尾的位置
$('div').append(p)
2-2. appendTo():子元素.appendTo(父元素)
子元素插入到父元素内部, 放在末尾的位置
p.appendTo($('div'))
2-3. prepend(): 父元素.prepend(子元素)
子元素插入到父元素内容, 放在最前面的位置
$('div').prepend(p)
2-4. prependTo(): 子元素.prependTo(父元素)
子元素插入到父元素内容, 放在最前面的位置
p 是一个 jQuery 创建的元素节点, 但是是一个复杂数据类型的变量
存储的是一个 地址, 只要我使用 p, 就是在使用堆里面得哪个空间
p.prependTo($('div'))
2-5. after(): 存在元素.after(插入元素)
插入元素排在存在元素的后面, 以兄弟关系出现
$('div').after(p)
2-6. insertAfter(): 插入元素.insertAfter(存在元素)
插入元素排在存在元素的后面, 以兄弟关系出现
p.insertAfter($('div'))
2-7. before(): 存在元素.before(插入元素)
插入元素排在存在元素的前面, 以兄弟关系出现
$('div').before(p)
2-8. insertBefore(): 插入元素.insertBefore(存在元素)
插入元素排在存在元素的前面, 以兄弟关系出现
p.insertBefore($('div'))
3. 删除节点
3-1. remove(): 元素集合.remove()
从自己的父元素里面移出
$('div').remove()
3-2. empty(): 元素集合.empty()
变成空标签后 把所有后代节点全部移除
$('div').empty()
4. 替换节点
4-1. replaceWith(): 换下节点.replaceWith(换上节点)
$('div > p').replaceWith(p)
4-2. replaceAll(): 换上节点.replaceAll(换下节点)
p.replaceAll($('div > p'))
5. 克隆节点
5-1. clone(): 元素集合.clone()
必然携带所有节点过来
第一个参数默认是 false, 表示是否克隆元素本身的事件, 选填 true
第二个参数默认是 跟随第一个, 表示是否克隆元素后代节点的事件, 选填
注意: 当第一个参数是 false 的时候, 第二个参数没有意义
$('.a').click(function () { console.log('div') })
$('.b').click(function () { console.log('p') })
下面这里介绍几个实战案例
1 回到顶部
1. 获取元素, 绑定点击事件
在点击事件里面使用动画让他上去
页面回到顶部, 一定要运动 html 元素
2. 一旦走起来停不下来了
滑动选项卡
1. 每一个 li 有一个鼠标移入事件
获取到移入的这个 li 的索引
span 的 left 就是索引 * 100 的位置
2. 一旦挨个触发动画, 小横线跟不上了 ?
stop()
3. 文字改变
获取到 当前 li 里面的文件设置商
4. 点击事件没有了
因为 span 覆盖在了 li 身上, 你点击到的都是 span
把 li 的事件委托给 ul, 并且设置 span 不作为事件目标
树状菜单
1. 给一级菜单的每一个 li 绑定事件
ul > li,自己添加 active, 所有的兄弟没有 active
自己下面的 ol 展开
自己所有兄弟元素下面的 ol 都闭合
版权声明: 本文为 InfoQ 作者【Jason199】的原创文章。
原文链接:【http://xie.infoq.cn/article/00ee8c5845080593d57f46bc2】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论