JavaScript可以通过previousSibling和previousElementSibling,nextSibling和nextElementSibling获取紧邻的上一个,下一个兄弟(标签)节点。
但是这么做只能获取一个兄弟节点。如果要获取所有的兄弟节点呢?
方法一:原生态的JS方法
* 参数:tag 目标标签。
* 功能:返回 tag标签的所有兄弟标签数组
let findSibling = ( tag )=>{
let parentEl = tag.parentNode ;
let childs = parentEl.children ;
let siblings = [];
for( let i = 0; i <= childs.length - 1 ; i++ ){
if( childs[i] === tag ){
continue ;
}
siblings[ siblings.length] = childs[i];
}
return siblings ;
};
思路:
通过目标标签 tag 的父节点,先找到所有的子标签。
然后,遍历这些子标签:
- 如果子标签就是tag,那么就绕过它--- 因为找兄弟标签,要除去tag自己。
- 反之,就把子标签放进一个数组中。
方法二:jQuery方法siblings
$(tag).siblings() // tag 所有的兄弟标签
$(tag).siblings(".xx") // tag 所有的类为xx的兄弟标签
虽然,jQuery方式简单就一句话。但是在这去jQuery化的时代,我还是推荐使用原生态JS来实现这功能。