自己封装的操作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 ...
随机推荐
- Android studio 如何查看模拟器里面的文件
1.查看SD卡里面的内容 2.看数据库
- 解决Android studio 非法字符的问题
前言:今天遇到一个问题,从一个项目中把一些类拷贝到Android studio 里面,运行的时候,报错. 显示刚才拷贝的类中有非法字符,我又检查了一遍,发现类中没有非法字符. 在网上查到了,相关的解决 ...
- Spring AOP 四大通知
Spring AOP 四大通知 Spring 3.X 以前 1.前置通知,实现 MethodBeforeAdvice 接口,重写 public void before(Method metho ...
- 转载文章----C#基础概念
转载地址:http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引 ...
- html的层叠次序---真没有想象的简单
学习资料1: http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html 学习资料2:http://www.cnblogs.com/weib ...
- 如何正确并完全安装Visual Studio 2015企业版本?
http://blog.csdn.net/code_godfather/article/details/47381631 [简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: ...
- mapreduce流程中的几个关键点
MapReduce中数据流动 (1)最简单的过程: map - reduce (2)定制了partitioner以将map的结果送往指定reducer的过程: map - partiti ...
- 操作linux命令
一.Linux下重启Tomcat 1. 进入tomcat下的bin目录:cd /user/standard/tomcat/bin; 使用关闭命令:./shutdown.sh; 查看Java进程是否关闭 ...
- oracle报错:ORA-00054: 资源正忙,要求指定 NOWAIT
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源: --首先得到被锁对象的session_idselect session_id from v$locked_object; -- ...
- maven-shade-plugin
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...