<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="d1">
<div id="d1_1"></div>
<div id="d1_2"></div>
</div>
<div id="d2">你好
<div id="d2_1">我是狗</div>
<div id="d2_2"></div>
</div> <table>
<tr>
<p>
<td id="haha">haha</td>
</p>
</tr>
</table> <script type="text/javascript">
var mylibs = {
first:function(elem){
return elem && (elem.firstElementChild || elem.firstChild);
},
last:function(elem){
return elem && (elem.lastElementChild || elem.lastChild);
},
prev:function(elem){
return elem && (elem.previousElementSibling || elem.previousSibling);
},
next:function(elem){
return elem && (elem.nextElementSibling || elem.nextSibling);
},
before:function(newElement,targetElement){
return targetElement && targetElement.parentNode ?
targetElement.parentNode.insertBefore(newElement,targetElement) :
null;
},
after:function(newElement,targetElement){
return targetElement && this.last(targetElement) == targetElement ?
// 如果最后的节点是目标元素,则直接添加。因为默认是最后
this.before(newElement,targetElement)
:
//如果不是,则插入在目标元素的下一个兄弟节点 的前面。也就是目标元素的后面
this.before(newElement, this.next(targetElement));
},
replace:function(elem,newElement,oldElement){ },
remove:function(elem){
return elem.parentNode.removeChild(elem);
},
empty:function(elem){
elem.innerHTML = '';
return elem;
},
append:function(elem,newElement){
return elem.appendChild(newElement);
},
text:function(elem,value){
return value === undefined ?
elem.textContent || elem.innerHTML.replace(/<[^<]+>/g,'') :
this.append(this.empty(elem),(elem && elem.ownerDocument || document).createTextNode(value));
},
html:function(elem,value){
if(value === undefined && elem.nodeType === 1)
return elem.innerHTML; if(typeof value === 'string' && /<(?:script|style|link)/i.test(value)){
value = value.replace(/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,'<$1></$2>');
elem.innerHTML = value;
} if(elem){
this.append(this.empty(elem),value);
}
} /*append() - 在被选元素的结尾插入内容
prepend() - 在被选元素的开头插入内容
after() - 在被选元素之后插入内容
before() - 在
remove() - 删除被选元素(及其子元素)
empty() - */ }; var dom1 = document.getElementById('d1'),
dom2 = document.getElementById('d2'); var tmp = document.createElement('div');
console.log(mylibs.after(tmp,dom2)); </script>
</body>
</html>

自己封装的操作DOM方法的更多相关文章

  1. 【分享】 封装js操作textarea 方法集合(兼容很好)。

    请使用下面的btn操作. 虽然你现在看来没什么用,当要用的时候又到处找资料,还不如现在收集一下.         在DOM里面操作textarea里面的字符,是比较麻烦的. 于是我有这个封装分享给大家 ...

  2. 用原型封装一个操作DOM的例子

    <script> // 一句话 在构造函数里面写属性 在原型里面写方法 function Elem(d){ this.even=document.getElementById(d); } ...

  3. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  4. Ext JS学习第十二天 Ext基础之操作dom ; get与fly 方法

    此文用来记录学习笔记 •嗯!首先,什么是DOM(Document Object Model) –W3C对DOM的定义:文档对象模型是一个平台,一个中立于语言的应用程序编程接口(API),允许程序访问并 ...

  5. JavaScript 节点操作Dom属性和方法(转)

    JavaScript 节点操作Dom属性和方法   一些常用的dom属性和方法,列出来作为手册用. 属性:   1.Attributes 存储节点的属性列表(只读)   2.childNodes 存储 ...

  6. 封装JDBC操作数据库的方法

    自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...

  7. JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分)

    JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分) 1.匹配属性的开头 $("[attributeName^='value']"); 2.匹配属性的结尾 ...

  8. zepto在操作dom的selected和checked属性时尽量使用prop方法

    zepto在操作dom的selected和checked属性时尽量使用prop方法.

  9. jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法

    一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...

随机推荐

  1. yii redies 不同的工程缓存key的问题

    参考这篇文章 基本配置操作: yii main.php中: return array( ... 'components'=>array( 'redis_cache' => array ( ...

  2. XMPP学习——2、用户登录

    最近在学习XMPP的使用,打算完成一个完整较为完整地Demo示例,通过这个示例掌握xmpp的使用与开发.同时打算在这个示例中学习使用一下其他的开源类库,在此作为记录学习. 包括服务器端--Openfi ...

  3. Android 短视频拍摄、拍照滤镜 第三方库SDK

    视频 1.趣拍云服务 http://vcs.qupai.me/ 拍照 1.camera360 SDk 拍照滤镜 http://www.camera360.com/ 2 .凃图 http://tusdk ...

  4. mac os 错误提示:下载失败 使用已购页面再试一次 解决方法

    最近由于买了macbook,开始用mac os系统,发现一个奇怪的现象,在app store里下载应用,老是提示:下载失败 使用已购页面再试一次 原来一直不知道怎么解决这个问题,今天研究了下,发现解决 ...

  5. PHP导出数据库方法

    (1)定义一个db_dump函数如下: <?PHP function db_dump($host,$user,$pwd,$db) { $mysqlconlink = mysql_connect( ...

  6. 试用 Nexus OSS 3.0 的docker仓库 (一)

    Nexus 3.0 可以创建三种docker仓库: 1. docker (proxy)      代理和缓存远程仓库 ,只能pull 2. docker (hosted)    托管仓库 ,私有仓库, ...

  7. MongoDB 安装(Window/Linux)

    MongoDB安装在Windows上 在 Windows上,首先要安装 MongoDB下载最新发布的MongoDB: http://www.mongodb.org/downloads 确保得到正确的版 ...

  8. 0014 Java学习笔记-集合-HashMap集合

    主要的方法 + 构造方法: * HashMap(); - 默认大小16,负载因子0.75 * HashMap(int initialCapacity); * HashMap(int initialCa ...

  9. jquery 基础教程[温故而知新二]

    子曰:“温故而知新,可以为师矣.”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了.“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身.不过有时候有些知识如果 ...

  10. 不同Framework下StringBuilder和String的性能对比,及不同Framework性能比(附Demo)

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 环境搭建 测试用例 MSDN说明 ...