原生JS添加节点方法与JQuery添加节点方法的比较及总结

 

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

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添加节点方法的比较及总结

    一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div1</div> <div id="d ...

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

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

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

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

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

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

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

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

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

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

  7. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  8. js添加、修改、删除xml节点例子

    version="1.0" encoding="gb2312"?> . <bookstore> . <book genre=" ...

  9. JS中的DOM操作怎样添加、移除、移动、复制、创建和查找节点

    DOM操作怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元 ...

随机推荐

  1. 【原创】poj ----- 1611 The Suspects 解题报告

    题目地址: http://poj.org/problem?id=1611 题目内容: The Suspects Time Limit: 1000MS   Memory Limit: 20000K To ...

  2. 【Android进阶】让程序运行效率更高的编程技巧总结

    1.在程序中若出现字符串连接的情况,请使用StringBuffer代替String,这样可以减少多次创建String以及垃圾回收所带来的内存消耗 2.尽量使用局部变量.调用方法时传递的参数以及调用中创 ...

  3. iOS Crash获取闪回日志和上传server

    首先我们整理常常会闪退的异常哪些:数组越界.空引用.引用没有定义方法.内存空间不足等等. 怎样获取crash闪退日志 -- 工具查看 先看第一个问题怎样查看,我搜索的方法有下面几个: 第一个方法:XC ...

  4. WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(三)实现ReplyChannel(2016-03-15 12:35)

    这是这个系列的第三篇,其他的文章请点击下列目录 WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(一)概要设计 WCF扩展之实现ZeroMQ绑定和protocolBuffer消息 ...

  5. 给Ubuntu安装KDE桌面 [转]

    自ubuntu5.10发布以来,我非常难得的让她在我的硬盘上顽强生存了近3个月,仔细想想就连当年我第一个接触的红旗Linux也不过坚持了一个月,呵呵,又写了一段废话── 所 谓的“重回Kununtu” ...

  6. 玩转html5(一)-----盘点html5新增的那些酷酷的input类型和属性

    今天正式开始学习html5了,相比html以前的版本,html5新增了好多功能,属性,使我们做出来的界面更加的绚丽,而且使用起来超级简单,这篇文章先来说说html增加的那些input类型和属性. 这些 ...

  7. Android 随着输入框控件的清除功能ClearEditText,抄IOS输入框

    今天给大家带来一个非常有用的小控件ClearEditText,就是在Android系统的输入框右边增加一个小图标,点击小图标能够清除输入框里面的内容,IOS上面直接设置某个属性就能够实现这一功能.可是 ...

  8. JAVA字符串格式化-String.format()使用

    传统型格类型 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. 熟悉C语言的同学应该记得C语言的sprintf()方法.两者有类似之处.format()方法有两种重载 ...

  9. React Native是一套使用 React 构建 Native app 的编程框架

    React Native是一套使用 React 构建 Native app 的编程框架 React Native at first sight what is React Native? 跟据官方的描 ...

  10. C++习题 对象数组输入与输出

    Description 建立一个对象数组,内放n(n<10)个学生的数据(学号.成绩),用指针指向数组首元素,输出第奇数(1,3,5,7)个学生的数据. Input n和n个学生的学号.成绩 O ...