javascript 节点遍历函数


Posted in Javascript onMarch 28, 2010

火狐官网上找到的一组函数,相当于treeWalker,有了它可以方便地在IE实现Traversal API 2的所有功能(nextElementSibling,previousElementSibling,firstElementChild,lastElementChild,children)These functions let you find the next sibling, previous sibling, first child, and last child of a given node (element). What makes them unique is that they safely ignore whitespace nodes so you get the real node you're looking for each time.

function is_all_ws(nod) { return !(/[^\t\n\r ]/.test(nod.data)); } 
function is_ignorable(nod) { return (nod.nodeType == 8) || ((nod.nodeType == 3) && is_all_ws(nod)); } 
function node_before(sib) { 
while ((sib = sib.previousSibling)) { 
if (!is_ignorable(sib)) return sib; 
} 
return null; 
} 
function node_after(sib) { 
while ((sib = sib.nextSibling)) { 
if (!is_ignorable(sib)) return sib; 
} 
return null; 
} 
function first_child(par) { 
var res = par.firstChild; 
while(res) { 
if(!is_ignorable(res)) return res; 
res = res.nextSibling; 
} 
return null; 
} 
function last_child(par) { 
var res = par.lastChild; 
while(res) { 
if(!is_ignorable(res)) return res; 
res = res.previousSibling; 
} 
return null; 
}
Javascript 相关文章推荐
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 Javascript
JSON 必知必会 观后记
Oct 27 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 Javascript
Vue动态实现评分效果
May 24 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
微信公众号平台接口开发 菜单管理的实现
Aug 14 Javascript
js canvas实现星空连线背景特效
Nov 01 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 Javascript
javascript 类型判断代码分析
Mar 28 #Javascript
js chrome浏览器判断代码
Mar 28 #Javascript
JavaScript 学习笔记一些小技巧
Mar 28 #Javascript
JavaScript 学习笔记二 字符串拼接
Mar 28 #Javascript
jQuery 美元符冲突的解决方法
Mar 28 #Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 #Javascript
Jquery 1.42 checkbox 全选和反选代码
Mar 27 #Javascript
You might like
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
javascript 特殊字符串
2009/02/25 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python读取word文本操作详解
2018/01/22 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
django框架forms组件用法实例详解
2019/12/10 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
关于python中remove的一些坑小结
2021/01/04 Python
财务总监岗位职责
2014/03/07 职场文书
奉献演讲稿范文
2014/05/21 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
新店开张宣传语
2015/07/13 职场文书
儿子满月酒致辞
2015/07/29 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
Vue如何清空对象
2022/03/03 Vue.js