一、首先构建一个简单布局,来供下边讲解使用

1、HTML部分代码:

<div id="div1">div1</div>
<div id="div2">div2
<span id="span1">span1</span>
<span id="span2">span2</span>
</div>
<div id="div3">div3
<b id="b1">b1</b>
<b id="b2">b2</b>
</div>

2、JS部分代码:(先把刚才在html中写的几个标签都获取到,此处只在原生JS中用,在JQuery中默认被删除)

var oDiv2 = document.getElementById('div2');
var oSpan2 = document.getElementById('span2');
var oB2 = document.getElementById('b2');

3、图示:

二、原生JS种添加节点一共有2种方法

1、appendChild()

(1)、概念:把要添加的节点添加到指定父级里面的最后面,所以也叫追加

(2)、使用方式:父级节点.appendChild( 要添加的节点 )

(3)、JS代码:

document.onclick = function(){
oDiv2.appendChild(oB2);//将b2追加到div2里面的最后面
}

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

2、insertBefore()

(1)、概念:把要插入的节点添加到指定父级里面的指定节点之前

(2)、使用方式:父级节点.insertBefore( 要插入的节点,指定节点 )

(3)、JS代码:(注:每执行一次新方法时,上一个方法都会被注释掉,为了易懂,此处注释一次,下面的文章中将不再把注释上一个方法的代码发上来)

document.onclick = function(){
//oDiv2.appendChild(oB2);此处将上一个方法注释
oDiv2.insertBefore(oB2,oSpan2);//将b2插入到div2中的span2前面
}

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法,但是值得注意的是,如果第二个参数节点不存在,在IE和Safari下会把要添加的节点使用appendChild()方法追加到指定父级中,而其他主流浏览器(Firefox、Chrome、Opera等)下会报错,所以在插入节点的时候,需要先判断第二个参数节点是否存在

三、jQuery中添加节点一共有4组方法,每组方法有2种方式

第一组:before()、insertBefore()

第二组:after()、insertAfter()

第三组:prepend()、prependTo()

第四组:append()、appendTo()

1、第一组的before()

(1)、概念:在指定节点的前面添加要添加的节点

(2)、使用方式:指定节点.before( 要添加的节点 )

(3)、JS代码:

先随便导入个jQuery(此时默认上边通过原生JS获取元素的方法的代码已被删除,并且导入jQuery的代码只发一次,后面的文章中不再发)

<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
$(document).click(function(){
$('#span2').before( $('#b2') );//在span2的前面添加b2
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

2、第一组的insertBefore()

(1)、概念:把要插入节点插入到指定节点的前面

(2)、使用方式:要插入的节点.insertBefore( 指定节点 )

(3)、JS代码:

$(document).click(function(){
$('#b2').insertBefore( $('#span2') );//将b2插入到span2的前面
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

3、第二组的after()

(1)、概念:把要添加的节点添加到指定节点的后面

(2)、使用方式:指定节点.after( 要添加的节点 )

(3)、JS代码:

$(document).click(function(){
$('#span2').after( $('#b2') );//在span2的后面添加b2
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

4、第二组的insertAfter()

(1)、概念:把要插入的节点插入到指定节点的后面

(2)、使用方式:要插入的节点.insertAfter( 指定节点 )

(3)、JS代码:

$(document).click(function(){
$('#b2').insertAfter( $('#span2') );//将b2插入到span2的后面
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

5、第三组的prepend()

(1)、概念:在指定父级里面的最前面添加指定节点

(2)、使用方式:父级节点.prepend( 要添加的节点 )

(3)、JS代码:

$(document).click(function(){
$('#div2').prepend( $('#b2') );//在div2里面的最前面添加b2
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

6、第三组的prependTo()

(1)、概念:把指定节点添加到指定父级里面的最前面

(2)、使用方式:要添加的节点.prependTo( 父级节点 )

(3)、JS代码:

$(document).click(function(){
$('#b2').prependTo( $('#div2') );//将b2添加到div2里面的最前面
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

7、第四组的append()(注:此方法基本等同于原生JS的appendChild方法)

(1)、概念:在指定父级里面的最后面添加指定节点

(2)、使用方式:父级节点.append( 要添加的节点 )

(3)、JS代码:

$(document).click(function(){
$('#div2').append( $('#b2') );//在div2里面的最后面添加b2
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

8、第四组的appendTo()

(1)、概念:把指定节点添加到指定父级里面的最后面

(2)、使用方式:要添加的节点.appendTo( 父级节点 )

(3)、JS代码:

$(document).click(function(){
$('#b2').appendTo( $('#div2') );//把b2添加到div2里面的最后面
})

(4)、图示:

(5)、兼容性:所有浏览器都支持此方法

四、JQuery中添加节点的4组方法每组之间的区别

1、发现问题:眼尖的朋友不难发现,jquery这4组添加节点的方法,每组的2种方法达到的效果几乎都差不多,那么他们到底有什么不同呢?我来拿举个例子大家就清楚了

2、举例说明:我们拿第四组来当例子,现在我要将刚才的JS代码做一些修改,在后边用css方法添加背景色

3、给用append()方法的代码加css方法

(1)、JS代码:

$(document).click(function(){
$('#div2').append( $('#b2') ).css('background','red');//在div2里面的最后面添加b2,并给返回来的jquery对象加背景色
})

(2)、图示:

4、给用appendTo()方法的代码加css方法

(1)、JS代码:

$(document).click(function(){
$('#b2').appendTo( $('#div2') ).css('background','red');//把b2添加到div2里面的最后面,并给返回来的jquery对象加背景色
})

(2)、图示:

五、总结

通过上面的2张图,可以发现,通过append()与appendTo()方法虽然都可以进行添加节点的操作,但是他们返回的jquery对象是不同的,而我们有时候要对添加节点后返回的jQuery对象进行后续操作,所以,我们在选择添加节点的方法的时候,要根据我们的实际需求来选择。(其他3组的也是同理,这里就不一一细说了)

原生JS添加节点方法与jQuery添加节点方法的比较及总结的更多相关文章

  1. JS添加节点方法与JQuery添加节点方法的比较及总结

    原生JS添加节点方法与JQuery添加节点方法的比较及总结   一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div ...

  2. 原生JS—实现图片循环切换的两种方法

    今天我们主要讲讲如何使用原生JS实现图片的循环切换的方法.多余的话我们就不多说了,我们一个一个开始讲吧. 1  原生JS实现图片循环切换 -- 方法一 在上栗子之前我们先简单介绍一下所用的一些知识点. ...

  3. 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别

    一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...

  4. 原生JS的使用,包括jquery和原生JS获取节点、jquery和原生JS修改属性的比较

    一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优 ...

  5. 原生js获取宽高与jquery获取宽高的方法的关系

    说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况.  2.以下所说的所有方法与属性所返回的值都是不带单位的.  3.为了方便说明,以下情况采用缩写表示:  obj -> ...

  6. 节点插入--对比jQuery和JavaScript方法(一)

    二.插入元素: 1 <div> 2 <p>面朝大海,春暖花开</p> 3 </div> (一).jQuery方法 1.在节点内部插入: 方法 说明 ap ...

  7. Query节点操作,jQuery插入节点,jQuery删除节点,jQuery Dom操作

    一.创建节点 var box = $('<div>节点</div>'); //创建一个节点,或者var box = "<div>节点</div> ...

  8. jQuery节点操作,jQuery插入节点,jQuery删除节点,jQuery Dom操作

    一.创建节点 1 var box = $('<div>节点</div>'); //创建一个节点,或者var box = "<div>节点</div& ...

  9. MVC异步AJAX的三种方法(JQuery的Get方法、JQuery的Post方法和微软自带的异步方法)

    异步是我们在网站开发过程中必不可少的方法,MVC框架的异步方法也有很多,这里介绍三种方法: 一.JQuery的Get方法 view @{ Layout = null; } <!DOCTYPE h ...

随机推荐

  1. Katu Puzzle

    poj3678:http://poj.org/problem?id=3678 题意:给你一些数,然后这些要么是0要么是1,然后回给出一些数之间的and,or,xor的值,问你是否存在一组解. 题解:2 ...

  2. 深入了解一下PYTHON中关于SOCKETSERVER的模块-B

    请求多个文件的原型. 这个是最草的情况,就是硬编码到内存中的字符串, 真实的应用还是会转到其它端口处理,或是读到硬盘上的文件吧. #!/usr/bin/env python from BaseHTTP ...

  3. Android ToolBar详解

    今年(2014) 的 google i/o 发表令多数人为之一亮的 material design,而 google 也从「google i/o 2014」 开始,大家也陆陆续续地看到其更新的 and ...

  4. 【转】Linux下svn的常用工作流程

    原文网址:http://www.cnblogs.com/cobbliu/archive/2011/07/08/2389011.html 上篇文章在ubuntu和redhat5.5上搭建好了svnser ...

  5. 数据库连接&数据库进程&数据库操作

    root@webwall:/home/xiachengjiao# vi/webwall/mysql/my.cnf(看配置文件中的参数) root@webwall:/webwall/mysql/bin# ...

  6. unity中的mesh合并

    在分析shadowgun时,无意中发现所有的环境建筑运行后,都被合并成一个叫做 "Combined Mesha (root: scene)" 的mesh了,但是没有发现任何合并的脚 ...

  7. Difference Between Primes

    Problem Description All you know Goldbach conjecture.That is to say, Every even integer greater than ...

  8. leetcode First Missing Positive hashset简单应用

    public class Solution { public int firstMissingPositive(int[] A) { HashSet<Integer> hash=new H ...

  9. 4G来临 IT业转型之路当在不远

    摘 要:4G商用未启,品牌营销争夺已经展开.目前,除了中国移动推出全新4G品牌“andM”之外,中国电信和中国联通均选择继续沿用3G的品牌. 4G商用未启,品牌营销争夺已经展开.12月10日,中国电信 ...

  10. cobbler_web安装