原生js封装的insertAfter()方法
以前有这样的需求用到insertAfter,基本上就是直接用jquery封装好的,现在学习原生的js,于是就想着自己也封装一个,网上很多关于insertAfter方法的封装,但是我发现都不怎么实用,主要原因是里面用的一些方法也不怎么兼容,比如nextSibling这个原生的js提供的api,取得元素包括空白的节点,以及childNodes也是想同的问题,于是自己觉得封装下兼容性好一些的insertAfter。
多余的话也就不多说了,直接上代码和例子:
//封装的nextSib方法出去空白节点
function nextSib(t){
var n=t.nextSibling;
if(t.nextSibling.nodeType!=1){
n=n.nextSibling;
}
return n;
}
/*这个方法你可以不用,使用children代替,以前不能用是因为ff不支持,
现在ff从3.5开始支持现在ff版本都到8了所以基本上没有人使用3.5一下的ff了,当然你
要是和照顾一下他们呢,那么下面这个方法就可以了
*/
function childNod(el){
var data=[];
for(var i=0;i<el.childNodes.length;i++){
if(el.childNodes[i].nodeType==1){
data.push(el.childNodes[i]);
}
}
return data;
}
//封装的insertAfter
function insertAfter(newChild,target){
var oParent=target.parentNode;
if(oParent.lastChild==target){
oParent.appendChild(newChild);
}else{
oParent.insertBefore(newChild,nextSib(target));
}
}
下面就给出一个例子,简单的使用:
提示:你可以先修改部分代码再运行。
发表于 jquery