检查元素(DOM节点)是否为兄弟节点

5

如何检查两个DOM元素是否是兄弟节点?

示例DOM结构:

<div>
    <a></a>
    <b></b>
    <p></p>
</div>
<i></i>

测试是否<b><a>的兄弟节点,但不是<i>的兄弟节点。

1个回答

15

jQuery:

var a = $('a'),
    b = $('b'),
    i = $('i');

a.siblings().is(b); // true (since "b" is sibling of "a")
a.siblings().is(i); // false (since "i" is sibling of "div" and not of "a")
a.siblings().is(a); // false (can't be singling of itself)

Vanilla:

const elm_p = document.querySelector('p');
const elm_a = document.querySelector('a');
const elm_i = document.querySelector('i');

const areSiblings = (elm1, elm2) => 
  elm1 != elm2 && elm1.parentNode == elm2.parentNode;

// tests
[
  [elm_p, elm_a], // true
  [elm_a, elm_p], // true
  [elm_a, elm_a], // false
  [elm_a, elm_i]  // false
].forEach(([a,b]) => console.log(areSiblings(a,b)))
<div>
    <a></a>
    <b></b>
    <p></p>
</div>
<i></i>


最好的、正确的、无论什么。你问问题的那一刻,你就得到了这个答案。在我看来,你并没有在问问题。我不理解其中的原因。 - BenG
2
@BenG - 是的,我经常这样做,在stackoverflow上已经有7年了。我提出问题并写出答案,这样其他人在谷歌搜索帮助时就能从中受益。用个人知识帮助社区是非常重要的事情。 - vsync
1
@BenG “在我看来,你好像并没有提出问题。这让我不理解你的想法。”请参阅:[什么是规范问题/答案,它们的目的是什么?] (http://meta.stackoverflow.com/q/291992) - guest271314
@guest271314 啊,我明白了。在阅读元数据后,我理解了。感谢您为我澄清这一点。 - BenG
由于这个问题被标记为“javascript”,您是否介意也发布一个JavaScript解决方案? - Peter
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接