现在在js中要获取兄弟节点有两种常用的方法,一种是利用js来遍历,另一种是利用jquery来获取,下面小编来给大家介绍一下.

比如一个ul里面有3个li,其中一个li发生onclick事件获取其他的兄弟节点。

兄弟,就是和你平辈的,既不是上一级也不是下一级,而且可能有比你大的(兄),也可能比你小(弟)。兄弟节点同理,下面是一个常规的获取兄弟节点的办法。

    <div class="ul"><ul><li class="li" onclick="siblings(this)">111</li><li class="li" onclick="siblings(this)">222</li><li class="li" onclick="siblings(this)">333</li></ul></div>

js

    function siblings(currentNode) {var siblingss = []; //用来存放其他的兄弟节点var elseLi = currentNode.parentNode.children;for (var i = 0, elseLil = elseLi.length; i < elseLil; i++) {if (elseLi[i] !== currentNode) {//判断是否是ele节点,是否与触发事件的节点相同siblingss.push(elseLi[i]);}}console.log(siblingss)return siblings;}

思路:先获取此元素的父节点的所有子节点,因为所有子节点也包括此元素自己,所以要从结果中去掉自己。

注意:这里获取父节点的兼容性写法   node.parentNode || node.parentElement

还有另外一种看起来比较奇特的方法,是jQuery里面获取兄弟节点的源码:

    function sibling(elem) {var r = [];var n = elem.parentNode.firstChild;for (; n; n = n.nextSibling) {if (n.nodeType === 1 && n !== elem) {r.push(n);}}return r;}

思路:先找到此元素的父节点的第一个子节点,然后循环查找此节点的下一个兄弟节点,一直到查找完毕。

我很奇怪为什么jQuery会使用这个方法,难道这个方法比第一个方法效率更高?

经过我初步测试——1500多个li,上面两个方法效率几乎无差别,都是几毫秒内就获取成功了。测试环境是chrome与firefox。

如果有获取所有兄弟节点的需求,可以使用以上任一方法。

当然,我会在以后的使用过程中验证以上两个方法,如果有出入,再更新吧。

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")

js 除了自己获取其他所有兄弟节点相关推荐

  1. html 获取下一个兄弟节点,js jquery获取当前元素的兄弟级 上一个 下一个元素

    var chils= s.childNodes;  //得到s的全部子节点 var par=s.parentNode;   //得到s的父节点 var ns=s.nextSbiling;   //获得 ...

  2. html 获取下一个兄弟节点,JS/JQuery获取当前元素的上一个/下一个兄弟级元素等元素的方法...

    $(function(){ //遍历获取的input元素对象数组,绑定click事件 var len = $("input[type='file']").length; for(v ...

  3. js 获取元素所有兄弟节点实例

    现在在js中要获取兄弟节点有两种常用的方法,一种是利用js来遍历,另一种是利用jquery来获取,下面小编来给大家介绍一下. 比如一个ul里面有10个li,而第3个li上有特殊的样式(比如颜色为红色, ...

  4. jquery兄弟标签_jquery如何获取某一个兄弟节点,不是全部的,是指定的兄弟节点...

    展开全部 $('#id').siblings() 当前元素62616964757a686964616fe59b9ee7ad9431333366303838所有的兄弟节点 $('#id').prev() ...

  5. JS获取子节点、父节点和兄弟节点的方法实例总结

    本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 1. 通过获取dom方式直接获取子节点 其中test的父标签id的值,div为标签的名 ...

  6. 原生 js 获取所有兄弟节点

    使用原生 js 获取所有的兄弟节点 // 封装成函数 function get_Siblings(elem) {let sibArr = []let allChilds = elem.parentNo ...

  7. js父元素获取子元素img_JS获取子节点、父节点和兄弟节点的方法实例总结

    本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 1. 通过获取dom方式直接获取子节点 其中test的父标签id的值,div为标签的名 ...

  8. JS获取子节点、父节点和兄弟节点的方法

    一.js获取子节点的方式 1. 通过获取dom方式直接获取子节点 其中test的父标签id的值,div为标签的名字.getElementsByTagName是一个方法.返回的是一个数组.在访问的时候要 ...

  9. js与jquery获取子节点、父节点、兄弟节点的方法

    js与jquery获取子节点.父节点.兄弟节点的方法 在写代码时,时不时会遇到获取子节点.父节点等需要,但有的时候总是弄混淆不是很清晰,所以针对这些问题,总结了jquery与js获取节点的方法 js方 ...

  10. js获取父子节点、兄弟节点

    一.js获取子节点 通过获取dom方式直接获取子节点 其中test的父标签id的值,div为标签的名字.getElementsByTagName是一个方法.返回的是一个数组.在访问的时候要按数组的形式 ...

最新文章

  1. android防治方法被反射,通过去classLoader避免Android P反射限制后还原classLoader的方法...
  2. 在EXCEL中怎么将多个CSV文件合并成一个文件
  3. Java访问控制修饰符作用域
  4. [armv9]-Introducing-Arm-Confidential-Compute-Architecture
  5. Oracle常用批量操作
  6. C和指针之字符串编程练习6
  7. 服务网关zuul之二:过滤器--请求过滤执行过程(源码分析)
  8. linux 打开db文件怎么打开方式,linux服务器打开数据库文件
  9. 数据结构c语言版第二版第三章课后答案,数据结构(C语言版)习题集答案第三章.doc...
  10. 支持pygame的python有哪些版本_完整构建文件支持PYGAME
  11. Linux之chmod命令
  12. 计算机网络 职中,职中计算机网络基础期中考试试卷.pdf
  13. connect to host master port 22: No route to host 问题解决方案
  14. python 调用 c 模块
  15. 计算机如何去除桌面名称阴影,去除桌面图标阴影 - 桌面图标有蓝色阴影怎么去掉 - 安全专题...
  16. 随手练——字符串按最小(大)字典序拼接
  17. 线下WINDOWS主机挂载华为云存储
  18. 软件工程课堂作业(十六)——找“1”的个数
  19. 美科学家试解“姆潘巴现象”
  20. 电子数据司法鉴定的网络平台设计

热门文章

  1. 教你一招恢复100分信用分,新手违规被扣40分,还有救吗?
  2. java获取连续日期天数
  3. 微信小程序的background-image使用
  4. mysql中的查找算法_7种查找算法解析
  5. 苹果7支持快充吗_苹果支持20W快充了,什么20W还叫快充,国内都到120W了
  6. phpunit问题与解决
  7. 如何修改anaconda的文件目录_Anaconda安装的常见错误和python的基础知识
  8. 微信可以批量清理僵尸粉啦
  9. STM32H7的终极调试组件Event Recorder
  10. 幼儿园观察记录的目的和目标_幼儿园一日观察报告