jquery DOM 创建、插入、删除 、复制、替换、包裹

1.创建元素节点:

$("

")
2.创建文本节点,与创建元素节点类似,可以直接把文本内容一并描述

$(“

我是文本节点
”)
3.创建属性节点:与创建元素节点同样的方式

$(“

我是文本节点
”)
$(“
动态创建DIV元素节点
”) //一句话创建元素、文本、属性节点
jquery较简洁,而如果用javascript,则代码比较多

复制代码
jquery:
    var $body = ( b o d y ) ;         ('body');      body.on(‘click’, function() {
    //通过jQuery生成div元素节点
      var div = ( " < d i v c l a s s = r i g h t > < d i v c l a s s = a a r o n > D I V < / d i v > < / d i v > " )             ("<div class='right'><div class='aaron'>动态创建DIV元素节点</div></div>")        body.append(div)
    })

javascript:

var body = document.querySelector(‘body’);

// document.addEventListener('click',function(){

//  //创建2个div元素
//  var rightdiv = document.createElement('div')
//  var rightaaron = document.createElement("div");

//  //给2个div设置不同的属性
//  rightdiv.setAttribute('class', 'right')
//  rightaaron.className = 'aaron'
//  rightaaron.innerHTML = "动态创建DIV元素节点";

//  //2个div合并成包含关系
//  rightdiv.appendChild(rightaaron)

//  //绘制到页面body
//  body.appendChild(rightdiv)

// },false)

复制代码

二、DOM内部插入append() 和 appendTo()

.append()和.appendTo()两种方法功能相同,主要的不同是语法——内容和目标的位置不同

append() 前面是被插入的对象,后面是要在对象内插入的元素内容 body.append(div)
appendTo()前面是要插入的元素内容,而后面是被插入的对象 div.appendTo(body)

$(".content").append(‘

通过append方法添加的元素
’)

( < d i v c l a s s = " a p p e n d T o " > a p p e n d T o < / d i v > ) . a p p e n d T o ( ('<div class="appendTo">通过appendTo方法添加的元素</div>').appendTo( (".content"))

三、DOM外部插入after() 与 before()

before与after都是用来对相对选中元素外部增加相邻的兄弟节点
2个方法都是都可以接收HTML字符串,DOM 元素,元素数组,或者jQuery对象,用来插入到集合中每个匹配元素的前面或者后面
2个方法都支持多个参数传递after(div1,div2,…)
注意点:

after向元素的后边添加html代码,如果元素后面有元素了,那将后面的元素后移,然后将html代码插入
before向元素的前边添加html代码,如果元素前面有元素了,那将前面的元素前移,然后将html代码插入

点击在前插入

$("#btn").on("click", function(){ $("#btn").before("

我是before

") })

四、DOM内部插入 prepend() 与 prependTo()

跟append()与appendTo() 方法一样

区别是 append()与appendTo() 默认加到子元素的后面, 即排到子元素队伍后面;而 prepend() 与 prependTo() 是排在队伍前面

append()向每个匹配的元素内部追加内容
prepend()向每个匹配的元素内部前置内容
appendTo()把所有匹配的元素追加到另一个指定元素的集合中
prependTo()把所有匹配的元素前置到另一个指定的元素集合中

五、DOM外部插入 insertAfter insertBefore

与 before() , after() 方法类似

( < p s t y l e = " c o l o r : r e d " > i n s e r t B e f o r e < / p > , < p s t y l e = " c o l o r : r e d " > < / p > ) . i n s e r t B e f o r e ( ('<p style="color:red">测试insertBefore方法增加</p>', '<p style="color:red">多参数</p>').insertBefore( (".test1")) //插入到test1 前,两者是兄弟关系
( < p s t y l e = " c o l o r : r e d " > i n s e r t A f t e r < / p > , < p s t y l e = " c o l o r : r e d " > < / p > ) . i n s e r t A f t e r ( ('<p style="color:red">测试insertAfter方法增加</p>', '<p style="color:red">多参数</p>').insertAfter( (".test2"))// 插入到test2 后,兄弟关系

六、DOM节点删除 empty()

empty 顾名思义,清空方法,但是与删除又有点不一样,因为它只移除了 指定元素中的所有子节点。

p元素1

p元素2

$("#test").empty(); // 只剩下

七、删除 remove()

复制代码

p元素1

p元素2

$(".test1").remove(); //删除整个 class=test1的div节点
$(“p”).remove(":contains(‘2’)"); // 删除p元素集合中中文本包含数字2 的p元素
复制代码
empty方法

严格地讲,empty()方法并不是删除节点,而是清空节点,它能清空元素中的所有后代节点
empty不能删除自己本身这个节点
remove方法

该节点与该节点所包含的所有后代节点将同时被删除
提供传递一个筛选的表达式,删除指定合集中的元素

八、DOM节点保留数据的删除 detach

这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。
$(“div”).detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。
复制代码

P元素1,默认给绑定一个点击事件


P元素2,默认给绑定一个点击事件


点击删除 p 元素
点击移动 p 元素

复制代码

九、拷贝,克隆 clone()

.clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。

clone方法比较简单就是克隆节点,但是需要注意,如果节点有事件或者数据之类的其他处理,

我们需要通过clone(ture)传递一个布尔值ture用来指定,这样不仅仅只是克隆单纯的节点结构,还要把附带的事件与数据给一并克隆了

复制代码
  


点击,clone浅拷贝

点击,clone深拷贝,可以继续触发创建

复制代码

十、替换 replaceWidth() 与 replaceAll()
.replaceAll()和.replaceWith()功能类似,主要是目标和源的位置区别
.replaceWith()与.replaceAll() 方法会删除与节点相关联的所有数据和事件处理程序
.replaceWith()方法,和大部分其他jQuery方法一样,返回jQuery对象,所以可以和其他方法链接使用
.replaceWith()方法返回的jQuery对象引用的是替换前的节点,而不是通过replaceWith/replaceAll方法替换后的节点
复制代码

第一段

第二段

第三段

$("p:eq(1)").replaceWith(' 我是新内容,替换旧的');// 如果是div ,则整个div包括子元素在内整个结构被替换

$(‘我是新内容,替换旧的’).replaceAll(‘p:eq(1)’);

//如果用页面已有的结构,如 第三个P 替换第二个P ,则第三个P不见了,剪切到第二个位置上
复制代码

十一、DOM包裹wrap() 方法 、去包裹upwrap() 、 集合后加父元素wrapAll()、给他的子元素加包裹wrapInner
如果要将元素用其他元素包裹起来,也就是给它增加一个父元素,针对这样的处理,JQuery提供了一个wrap方法

复制代码

p元素

//给p元素增加一个div包裹
$(‘p’).wrap(’

’)

变为:

p元素

//另一写法
$(‘p’).wrap(function() {
return ‘

’; //与第一种类似,只是写法不一样
})
复制代码

jQuery提供了一个unwarp()方法 ,作用与wrap方法是相反的。将匹配元素集合的父级元素删除,保留自身(和兄弟元素,如果存在)在原来的位置。

p元素

$(‘p’).unwarp();
//找到p元素,然后调用unwarp方法,这样只会删除父辈div元素了

wrapAll() 方法:集合后加父元素

复制代码

123

1 2

456

$(‘body’).click(function(){
$(“p”).wrapAll("

");
})
//执行后,把所有p元素集合起来,集合在第一个p的位置,再加父元素,页面机构变为:

123

456

1 2 复制代码

给匹配的子元素加包裹 wrapInner()

复制代码

文本
hello
   文本
     hello   

猜你喜欢

转载自blog.csdn.net/qq_43493141/article/details/85013594