JS获取节点的兄弟,父级,子级元素的方法


Posted in Javascript onJanuary 09, 2014

先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。

JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素

<div id="test">
<div></div>
<div></div>
</div>

原生的JS获取ID为test的元素下的子元素。可以用:

var a = docuemnt.getElementById("test").getElementsByTagName("div");  这样是没有问题的

此时a.length=2;

但是如果我们换另一种方法

var b =document.getElementById("test").childNodes; 

此时b.length 在IE浏览器中没问题,其依旧等于2,但是在FF浏览器中则会使4,是因为FF把换行也当做一个元素了。

所以,在此,我们就要做处理了,需遍历这些元素,把元素类型为空格而且是文本都删除。

function del_ff(elem){
var elem_child = elem.childNodes;
for(var i=0; i<elem_child.length;i++){
if(elem_child[i].nodeName == "#text" && !/\s/.test(elem_child.nodeValue))
{elem.removeChild(elem_child)
}
}
}

上述函数遍历子元素,当元素里面有节点类型是文本并且文本类型节点的节点值是空的。就把他删除。

nodeNames可以得到一个节点的节点类型,/\s/是非空字符在JS里的正则表达式。前面加!,则表示是空字符

test() 方法用于检测一个字符串是否匹配某个模式.语法是: RegExpObject.test(string)

如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

nodeValue表示得到这个节点里的值。

removeChild则是删除元素的子元素。

之后,在调用子,父,兄,这些属性之前,调用上面的函数把空格清理一下就可以了

<div id="test">
<div></div>
<div></div>
</div>
<script>
function dom() {
var s= document.getElementById("test");
del_ff(s);    //清理空格
var chils= s.childNodes;  //得到s的全部子节点
var par=s.parentNode;   //得到s的父节点
var ns=s.nextSbiling;   //获得s的下一个兄弟节点
var ps=s.previousSbiling;  //得到s的上一个兄弟节点
var fc=s.firstChild;   //获得s的第一个子节点
var lc=s.lastChile;   //获得s的最后一个子节点
}
</script>

下面介绍JQUERY的父,子,兄弟节点查找方法

jQuery.parent(expr)  找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class")

jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素

jQuery.children(expr).返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点

jQuery.contents(),返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个

jQuery对象返回,children()则只会返回节点

jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点

jQuery.prevAll(),返回所有之前的兄弟节点

jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点

jQuery.nextAll(),返回所有之后的兄弟节点

jQuery.siblings(),返回兄弟姐妹节点,不分前后

jQuery.find(expr),跟jQuery.filter(expr)完全不一样。jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()的返回结果,不会有初始集合中的内容,比如$("p"),find("span"),是从<p>元素开始找<span>,等同于$("p span")

Javascript 相关文章推荐
js判断输入是否为正整数、浮点数等数字的函数代码
Nov 17 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
Jun 27 Javascript
情人节之礼 js项链效果
Feb 13 Javascript
js实现对table动态添加、删除和更新的方法
Feb 10 Javascript
jQuery基于ajax实现星星评论代码
Aug 07 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
Apr 17 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
Oct 26 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 Javascript
微信小程序实现的一键拨号功能示例
Apr 24 Javascript
vue搜索和vue模糊搜索代码实例
May 07 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 #Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 #Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 #Javascript
fmt:formatDate的输出格式详解
Jan 09 #Javascript
js中window.open()的所有参数详细解析
Jan 09 #Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 #Javascript
解决jquery中美元符号命名冲突问题
Jan 08 #Javascript
You might like
浅谈php命令行用法
2015/02/04 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python基础教程之序列详解
2014/08/29 Python
python访问系统环境变量的方法
2015/04/29 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python+django+rest框架配置创建方法
2019/08/31 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
如何使用Python调整图像大小
2020/09/26 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
班级文化标语
2014/06/23 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
2015年档案室工作总结
2015/05/23 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
如何有效防止sql注入的方法
2021/05/25 SQL Server
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python