js模仿jquery里的几个方法next, pre, nextAll, preAll
/*siblings函数, 选取node的所有兄弟节点*/
function siblings(node){
if(node.nodeType === 1){
node.flag = true; //给当前节点打上一个标志
var children = node.parentNode.childNodes,
length = children.length,
tempArray = [],
i = 0;
for(; i < length; i++){
if(!children[i].flag && children[i].nodeType === 1 && children[i].nodeName !== 'SCRIPT'){ //过滤一下script节点
tempArray.push(children[i]);
}
}
return tempArray.length ? tempArray : null;
}
else{
return null;
}
}
/*选取紧邻node节点的下一个兄弟节点*/
function next(node){
var next = node.nextSibling;
if(next !== null && next.nodeType === 3){ //防止内联元素在ie下出现的空白节点和火狐下的空白节点
return next.nextSibling;
}
return next;
}
/*选取紧邻node节点的上一个兄弟节点*/
function pre(node){
var pre = node.previousSibling;
if(pre !== null && pre.nodeType === 3){ //防止内联元素在ie下出现的空白节点和火狐下的空白节点
return pre.previousSibling;
}
return pre;
}
/*选取node节点后的所有兄弟节点*/
function nextAll(node){
var nextNode = next(node),
nodeArray = [];
while(nextNode != null){
nodeArray.push(nextNode);
nextNode = next(nextNode);
}
return nodeArray;
}
/*选取node节点前的所有兄弟节点*/
function preAll(node){
var preNode = pre(node),
nodeArray = [];
while(preNode != null){
nodeArray.push(preNode);
preNode = pre(preNode);
}
return nodeArray;
}
js模仿jquery里的几个方法next, pre, nextAll, preAll的更多相关文章
- js模仿jquery里的几个方法parent, parentUntil, children
有时工作需要, 也是接着上一章的方法, 用js模仿jquery里的几个方法parent, parentUntil, children. function parent(node){ return no ...
- 详解js和jquery里的this关键字
详解js和jquery里的this关键字 js中的this 我们要记住:this永远指向函数运行时所在的对象!而不是函数被创建时所在的对象.this对象是在运行时基于函数的执行环境绑定的,在全局环境中 ...
- jquery里正则的使用方法及常用的正则验证
本文是一篇关于jquery使用正则来验证输入,及一些常用验证规则的基础文章,适合新手. 假设我们的网页里有这样的一个表单: <input id="aijquery" type ...
- jquery里互为逆过程的方法
jquery里互为逆过程的方法reverse 在jquery里,有不少互为逆过程的方法,如parent()与children(),parents()与find(),first()和last()等,这些 ...
- JS删除String里某个字符的方法
关于JS删除String里的字符的方法,一般使用replace()方法.但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则. 1 2 3 4 var str = " ...
- 用原生js模仿jquery
阅读声明:本文档仅供学习,由于个人能力有限,文档中有错漏的地方还请指出,大家共同学习. 目前在学习怎么样写jquery,模仿阶段,有兴趣的同学可以和我一起学习,共同交流,在学习的路上希望有你做伴. 在 ...
- 玩转web之javaScript(五)---js和jquery一些不可不知的方法(input篇)
很多时候我们都利用js和jquery中操作input,比如追加属性,改变属性值等等,我在这里简单的整理了一下,并在以后逐步补充. 1:删除input的某一属性. <input name=&quo ...
- 用原生JS模仿jquery,需要HTML5的支持
jQuery是现在最流行的JavaScript工具库. 据统计,目前全世界57.3%的网站使用它.也就是说,10个网站里面,有6个使用jQuery.如果只考察使用工具库的网站,这个比例就会上升到惊人的 ...
- 使用原生js模拟jQuery选择器,实现new方法,兼容ie5
// 考虑到兼容ie5,未使用es6语法 /* 使用方法: 在<head>标签中(需使用ready方法): <script src="./jQuery2.js"& ...
随机推荐
- nginx 重启命令
#重启nginx sudo /etc/init.d/nginx restart sudo /etc/init.d/nginx Usage: /etc/init.d/nginx {start|stop| ...
- JSONP 含jquery 实例
前言: 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Soc ...
- gets--vs--fgets
gets fget的区别 这两个函数都能从标准的输入流中读取信息,比如从键盘中输入信息,但是有些区别. 使用gets当输入的字符多于预定个数时候,会造成溢出,程序报错. int main(int ...
- mvc 之 @Html.DropDownList
Dictionary<string, string> myDic = new Dictionary<string, string>(); myDic.Add(System.DB ...
- Python操作RabbitMQ初体验(一)
由于想用Python实现一套分布式系统,来管理和监控CDN的内容与运行状态,误打误撞认识了RabbitMQ,推荐的人很多,如余锋<我为什么要选择RabbitMQ>等等. 在MQ这个词汇映入 ...
- oracle分页与rownum
Oracle分页(limit方式的运用) Oracle不支持类似于 MySQL 中的 limit. 但你还是可以rownum来限制返回的结果集的行数. 第一种 select * from a_matr ...
- 扩展ServiceHost<T>类
public class ServiceHost<T> : ServiceHost { public void EnableMetadataExchange(bool enableHttp ...
- 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java
前一段时间,学习数据结构的各种算法,概念不难理解,只是被C++的指针给弄的犯糊涂,于是用java,web,javascript,分别去实现数据结构的各种算法. 二叉树的遍历,本分享只是以二叉树中的先序 ...
- android 注销
1.在个人中心退出系统MainActivity 2.清空保存的登录数据 3.打开登录LoginActivity 方法: SharedPreferencesManager.getInstance(mCo ...
- SQL Server 2008 的gis函数
居然不知道sql有gis函数,孤陋寡闻了 https://msdn.microsoft.com/zh-cn/library/bb933904.aspx STContains(geometry 数据 ...