自己封装的操作DOM方法
<!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方法的更多相关文章
- 【分享】 封装js操作textarea 方法集合(兼容很好)。
请使用下面的btn操作. 虽然你现在看来没什么用,当要用的时候又到处找资料,还不如现在收集一下. 在DOM里面操作textarea里面的字符,是比较麻烦的. 于是我有这个封装分享给大家 ...
- 用原型封装一个操作DOM的例子
<script> // 一句话 在构造函数里面写属性 在原型里面写方法 function Elem(d){ this.even=document.getElementById(d); } ...
- js操作textarea方法集合
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- Ext JS学习第十二天 Ext基础之操作dom ; get与fly 方法
此文用来记录学习笔记 •嗯!首先,什么是DOM(Document Object Model) –W3C对DOM的定义:文档对象模型是一个平台,一个中立于语言的应用程序编程接口(API),允许程序访问并 ...
- JavaScript 节点操作Dom属性和方法(转)
JavaScript 节点操作Dom属性和方法 一些常用的dom属性和方法,列出来作为手册用. 属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储 ...
- 封装JDBC操作数据库的方法
自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...
- JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分)
JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分) 1.匹配属性的开头 $("[attributeName^='value']"); 2.匹配属性的结尾 ...
- zepto在操作dom的selected和checked属性时尽量使用prop方法
zepto在操作dom的selected和checked属性时尽量使用prop方法.
- jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法
一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...
随机推荐
- Java虚拟机JVM学习03 连接过程:验证、准备、解析
Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...
- 【C语言】C语言运算符
目录: [算术运算符] [自增运算符] [自减运算符] [关系运算符] [逻辑运算符] [三目运算符] [sizeof运算符] · 作用 1.算术运算符 +(加).-(减).*(乘)./(除).%(取 ...
- 你真的了解UITableViewCell重用吗?
一:首先查看一下关于UITableViewCell重用的定义 - (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentif ...
- jQuery删除节点和追加节点
for (var i in checkedBoxIds) { var $td = $("#" + checkedBoxIds[i]).parent().parent().detac ...
- Masonry(AutoLayout)的使用
Masonry 仍然在维持. 如果使用 Swift 开发, 建议使用 SnapKit. Masonry 以一种简便可读的代码实现子控件自动布局 ,甚至可以实现一些动画,是一中轻量级的框架. Mason ...
- 一个简单的Servlet容器实现
上篇写了一个简单的Java web服务器实现,只能处理一些静态资源的请求,本篇文章实现的Servlet容器基于前面的服务器做了个小改造,增加了Servlet请求的处理. 程序执行步骤 创建一个Serv ...
- 讲讲js中的逻辑与(&&)以及逻辑或(||)
前几天看到一个函数,百思不得其解,今天早上醒来看了本js的书,正好讲到操作符的用法,给大家分享下js中的&&,||,和我们用的其他的编程语言还是有点区别的. 直接上那个函数的代码: f ...
- FFMPEG ./configure 参数及意义
FFMPEG版本:2.6.2,编译环境:ubuntu 14.4. 不同版本的FFMPEG参数可能不同,可在FFMPEG目录下使用以下命令查看 ./configure --help --help pri ...
- shell流程控制&函数
条件 if-then-elif-then-fi if的条件部分经常使用test EXPRESSION或[ EXPRESSION ]实现,test的用法可以参见test if 条件1 #if 条件1;t ...
- Cookie在IE缓存问题深度研究
最近在发布net到生产环境的时候,测试发现了问题,IE的登录无效. 同样的版本在QA环境没有遇到问题. 代码一样,chrome,firefox 都可以.就是IE不行,调试发现 登录完成,读取cooki ...