javascript遍历子元素
最近写代码时需要获取符合某些条件的节点子元素,用firstChild之类的方法会包含文本节点,所以包装了一个简单的类:
//子元素遍历器
function ElementWalker(node) {
if(typeof node === 'string')
node = document.getElementById(node);
this.node = node;
}
ElementWalker.prototype = {
//获取第一个指定tagName的子元素,如果tagName没定义,则返回第一个子元素
first: function(tagName) {
if((typeof tagName === 'undefined') && this.node.firstElementChild) {
return new ElementWalker(this.node.firstElementChild);
}
for(i = 0; i < this.node.childNodes.length; i++) {
if(this.checkChild(i,tagName)) {
return new ElementWalker(child);
}
}
},
//获取最后一个指定tagName的子元素,如果tagName没定义,则返回最后一个子元素
last: function(tagName) {
if((typeof tagName === 'undefined') && this.node.lastElementChild) {
return new ElementWalker(this.node.lastElementChild);
}
for(i = parent.childNodes.length - 1; i >= 0; i--) {
var child = this.node.childNodes[i];
if(this.checkChild(child,tagName)) {
return new ElementWalker(child);
}
}
},
//返回所有指定tagName的子元素,如果tagName没定义,则返回所有子元素
all: function(tagName) {
var children = [];
for(i = 0; i < this.node.childNodes.length; i++) {
var child = this.node.childNodes[i];
if(this.checkChild(child,tagName)) {
children.push(new ElementWalker(child));
}
}
return children;
},
//校验child是否是指定tagName的元素
checkChild : function(child,tagName) {
var isOK = (typeof tagName === 'undefined') && child.nodeType == 1;
isOK = isOK || (child.tagName && child.tagName.toLowerCase() === tagName);
return isOK;
}
}
javascript遍历子元素的更多相关文章
- Javascript禁止子元素继承父元素的事件
3种方法1.在父元素事件的function中加if(event.target==this){ }2.子元素事件function最后加event.stopPropgation():// 阻止事件冒泡3. ...
- JQuery 遍历子元素+ each函数的跳出+提取字符串中的数字
最近脑袋迷糊的如同一团浆糊,一直出错. HTML代码如下图,现在想实现的功能是根据Ajax请求,获取到具体的button,以更新其样式.由于Button较多,每个Button都设置id,没有意义,想通 ...
- javascript阻止子元素继承父元素事件
$('.box').on('click', function (e) { if(e.target == this) { console.log(e.target) } })
- jquery根据(遍历)html()的内容/根据子元素的内容(元素文本)来选择(查询),在子元素前加入元素
<ul> <li>First</li> <li>second</li> <li>third</li> </ul ...
- Javascript事件模型(二):Javascript事件的父元素和子元素
DOM事件标准定义了两种事件流,分别是捕获和冒泡.默认情况下,事件使用冒泡事件流,不使用捕获事件流.你可以指定使用捕获事件流,方法是在注册事件时传入useCapture参数,将这个参数设为true. ...
- 原生JavaScript如何解决父元素查找指定类名的子元素的问题
问题:已知一个元素的类名是right并且这个元素的祖先元素的类名为parent,现在想通过原生JavaScript获得这个类名为right的元素. 我的思路:利用递归.先判断已知的祖先元素(题中的pa ...
- javascript判断一个元素是另外一个元素的子元素
javascript判断一个元素是另外一个元素的子元素用途有很多,最常用的就是当点击页面的空白处去执行某些操作,比如弹出层等. function isParent (obj,parentObj){ w ...
- js遍历 子节点 子元素
Js 节点 子元素 属性 方法 // 添加子节点前 删除所有子节点 var usernameEle = document.getElementById("username"); v ...
- DOM操作-倒排序子元素
代码: —————————————————————————————— <script type="text/javascript"> // ...
随机推荐
- VPN连接失败
连接VPN是总提示 本来我以为是VPN服务器的问题,可是别人就能连接成功,所以只能是我自己机子的问题.后来检查了一下连接属性,终于发现了问题: 这里“允许使用这些协议”应该是处于选中状态,而我的属性里 ...
- c语言内存分配-malloc
malloc 原型:(原来返回类型是char) extern void *malloc(unsigned int num_bytes); 头文件: #include <stdlib.h> ...
- 普通委托到泛型委托到Linq
private delegate bool delTest(int a); private void button1_Click(object sender, EventArgs e) { var a ...
- C 简易基础开发框架 - simple c
引言 一个为 简单高效而生的 简易跨平台的 纯C开发框架. githup上源码 https://github.com/wangzhione/sconsole_project 请容我细说 s ...
- Hello World程序
本文最初发表于2015-8-??,是由别的地方迁移过来的 本文利用改写内存的办法在屏幕中央显示“Hello world”字符串. 首先我们需要了解80*25彩色字符模式显示缓冲区的结构. 〉〉内存中B ...
- EMVTag系列17《9F66 终端交易属性》
字节:1 8 1 – 支持非接触磁条 (MSD) 0– 不支持非接触磁条 (MSD) 7 1 – 支持非接触PBOC 0– 不支持非接触PBOC 6 1 – 支持非接触qPBOC 0 ...
- ASP.NET内置对象之Request传递请求对象
Request对象是HttpRequest类的一个实例,Request对象用于读取客户端在Web请求期间发送的HTTP值.Request对象常用的属性如下所示. q QueryString: ...
- SoundCloud 的开发功能
SoundCloud开发功能:https://developers.soundcloud.com/docs 来自为知笔记(Wiz)
- 无法找到脚本文件 C:/Windows/explorer.exe:574323188.vbs
今天打开电脑后电脑有点反常,在启动时没有运行 “局域网” 保护的程序,而且还他是 “无法找到脚本文件”如下图: 发现这个东西后,第一反应,拔掉网线.因为很有可能是中病毒了,当时就出了一身冷汗,到底是怎 ...
- Lua利用cjson读写json示例分享
本文结合本人的实际使用经验和代码示例,介绍如何在Lua中对json进行encode和decode,需要的朋友可以参考下 我这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能 ...