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 相关文章推荐
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
javascript 框架小结 个人工作经验
Jun 13 Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 Javascript
原生javascript获取元素样式属性值的方法
Dec 25 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
jQuery调用ajax请求的常见方法汇总
Mar 24 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
node.js 发布订阅模式的实例
Sep 10 Javascript
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
js实现动态时钟
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 和 MYSQL
2006/10/09 PHP
基于mysql的bbs设计(二)
2006/10/09 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
php实现的漂亮分页方法
2014/04/17 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python3.x对JSON的一些操作示例
2017/09/01 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
勤俭节约倡议书
2014/04/14 职场文书
ktv筹备计划书
2014/05/03 职场文书
超市店庆活动方案
2014/08/31 职场文书
股东授权委托书范本
2014/09/13 职场文书
稽核岗位职责
2015/02/10 职场文书
Python基础知识之变量的详解
2021/04/14 Python
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL