javascript jquery 插入节点方法一览

插入节点的方法一点都不难, 就是经常记不住, 或者分不清, 所以假定你已经熟练甚至精通这些方法的使用
本篇旨在总结它们的差别, 用法就不详细介绍了

注: before & insertBefore, after & insertAfter 目标节点和操作节点的关系应该是"兄弟关系", 但我觉得以"父子关系"描述更能表达它们的主次关系

javascript

appendChild

父.appendChild(子)

插入位置: 父节点里的最后位置

insertBefore

父.insertBefore(子, undefined)
父.insertBefore(子, 父.children[2])

插入位置: 第二个参数传入父节点的某个子节点, 最终插入到那个子节点的前面;
第二个参数可以为 [undefined, null], 最终插入到父节点里的最后位置(同 appendChild)


jquery

before & insertBefore

$(父).before(子)
$(子).insertBefore(父)

插入位置: 父节点外的前面

prepend & prependTo

$(父).prepend(子)
$(子).prependTo(父)

插入位置: 父节点里的最前位置

append & appendTo

$(父).append(子)
$(子).appendTo(父)

插入位置: 父节点里的最后位置(同 appendChild)

after & insertAfter

$(父).after(子)
$(子).insertAfter(父)

插入位置: 父节点外的后面


以上方法共同特性

  • 如果子节点存在于文档, 子节点会从原位置移动到新位置. 就是说以上方法其实是[移动]而不是[复制]
  • 都会返回子节点, js 返回 js 格式, jq 返回 jq 格式

插入位置图解如下

在这里插入图片描述


demo

<html>

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta charset="utf-8">
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
	<title>javascript jquery 插入节点方法一览</title>
	<style>
		* { padding: 20px; }
		div { outline: green 1px solid; }
		div::before { content: "目标父节点"; }
		ul { outline: red 1px solid; list-style-type: none; }
		ul::before { content: "目标节点"; }
		li { outline: blue 1px solid; list-style-type: none; }
		li::marker { outline: blue 1px solid; }
		li::before { content: "目标子节点"; }
		div, ul, li { position: relative; }
		div::before, ul::before, li::before { display: block; font-size: 12px; position: absolute; top: 0; right: 0; background-color: salmon; }
	</style>
</head>

<body>

	<div>
		<ul id="ul">
			<li>原有项</li>
			<li>原有项</li>
			<li>原有项</li>
		</ul>
	</div>

	<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.js"></script>
	<script type="text/javascript">
		"use strict"

		window.onload = function (params) {
			var _ul = document.getElementById("ul")

			//

			var _innerHTML = document.createElement("li")
			_innerHTML.innerHTML = "appendChild"
			_ul.appendChild(_innerHTML)

			//

			var _insertBefore = document.createElement("li")
			_insertBefore.innerHTML = "insertBefore"
			_ul.insertBefore(_insertBefore, undefined)

			var _insertBefore2 = document.createElement("li")
			_insertBefore2.innerHTML = "insertBefore 指定到第2项的前面"
			_ul.insertBefore(_insertBefore2, _ul.children[2])

			//

			var _before = document.createElement("li")
			_before.innerHTML = "$.before"
			$("#ul").before(_before)

			var _insertBefore = document.createElement("li")
			_insertBefore.innerHTML = "$.insertBefore"
			$(_insertBefore).insertBefore("#ul")

			//

			var _prepend = document.createElement("li")
			_prepend.innerHTML = "$.prepend"
			$("#ul").prepend(_prepend)

			var _prependTo = document.createElement("li")
			_prependTo.innerHTML = "$.prependTo"
			$(_prependTo).prependTo("#ul")

			//

			var _append = document.createElement("li")
			_append.innerHTML = "$.append"
			$("#ul").append(_append)

			var _appendTo = document.createElement("li")
			_appendTo.innerHTML = "$.appendTo"
			$(_appendTo).appendTo("#ul")

			//

			var _after = document.createElement("li")
			_after.innerHTML = "$.after"
			$("#ul").after(_after)

			var _insertAfter = document.createElement("li")
			_insertAfter.innerHTML = "$.insertAfter"
			$(_insertAfter).insertAfter("#ul")

		}
	</script>
</body>

</html>

将 demo 中的代码一段段执行, 比较, 很容易就能厘清以上方法的差异了

end

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值