当前位置:首页 > JavaScript

js 实现siblings

2026-04-05 21:46:54JavaScript

实现 siblings 方法

在原生 JavaScript 中,DOM 元素没有直接提供 siblings 方法,但可以通过组合 parentNodechildren 属性来实现。

方法一:过滤兄弟节点

Element.prototype.siblings = function() {
    const children = this.parentNode.children;
    return Array.from(children).filter(child => child !== this);
};

方法二:使用 previousSibling 和 nextSibling

js 实现siblings

Element.prototype.siblings = function() {
    let siblings = [];
    let sibling = this.previousSibling;

    while (sibling) {
        if (sibling.nodeType === 1) {
            siblings.push(sibling);
        }
        sibling = sibling.previousSibling;
    }

    sibling = this.nextSibling;
    while (sibling) {
        if (sibling.nodeType === 1) {
            siblings.push(sibling);
        }
        sibling = sibling.nextSibling;
    }

    return siblings;
};

使用示例

const element = document.getElementById('target');
const siblings = element.siblings();
console.log(siblings); // 输出所有兄弟节点数组

注意事项

  1. 方法一会返回所有同级的元素节点,不包括文本节点等其他类型节点
  2. 方法二需要手动过滤非元素节点(nodeType === 1)
  3. 扩展原生对象的原型可能会与其他库产生冲突
  4. 如果不希望修改原型,可以创建独立函数:
function getSiblings(el) {
    return Array.from(el.parentNode.children).filter(child => child !== el);
}

这些实现方式都能获取到指定元素的所有兄弟元素节点,根据具体需求选择合适的方法。

标签: jssiblings
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…