【问题标题】:Check if elements has\belongs to the same parent检查元素是否属于同一个父级
【发布时间】:2015-10-17 17:02:18
【问题描述】:

我还有一个问题。 例如我们有一个 HTML:

<div id="imageDiv>
<a id="testA">
    <img alt="" src "" id="img1">
    <img alt="" src "" id="img2">
    <img alt="" src "" id="img3">
    <img alt="" src "" id="img4">
    <img alt="" src "" id="img5">
</a>
    <img alt="" src "" id="img6">
</div>

我如何从最低级别检查,如果可能的话,使用简单的 JQuery 选择器或扩展,ID 为 1 到 5 的图像是否具有相同的父级,但不是具有第 6 个 ID 的图像。

换句话说:如何检查 id 为 1 到 5 的图像是否为兄弟姐妹()?

非常感谢

【问题讨论】:

  • @Tushar 不仅是#img1,还有#img1-5...
  • 取item的parent的children,检查是否包含你感兴趣的元素。
  • @artm 这将具有巨大的复杂性并且非常低效,我将不得不检查每个图像是否存在这种情况
  • @Tushar 与 DOM 节点不同,两个 jQuery 对象永远不会“相等”,例如:$('#img1')[0].parentNode === $('#img5')[0].parentNode

标签: jquery jquery-plugins jquery-selectors


【解决方案1】:

http://jsfiddle.net/t324Lwoy/1/

function areSiblings(e1, e2){
    return $(e1).parent().children().is($(e2));
};

console.log(areSiblings("#img1", "#img3"));
console.log(areSiblings("#img2", "#img5"));
console.log(areSiblings("#img1", "#img6"));

更新:

function areSiblings(e1, e2){
    return $(e1).siblings().is($(e2));
};

【讨论】:

  • 有没有办法执行相同的功能并传递元素数组??
  • 使用.siblings()代替.parent().children()
  • @AlexBerd 你打算通过什么样的数组?你能举一个你的用法的例子吗?
  • @artm A.wolff 谢谢大家的帮助
  • @AlexBerd 我看到了您对我的答案的编辑,但是如果您使用areSiblings(["#img1", "#img3"]); 调用更新的解决方案,并传入一个数组,它将不起作用。因此,请检查您的编辑,并确保您包含一个可行的解决方案以及如何调用新函数。
猜你喜欢
  • 2013-11-03
  • 1970-01-01
  • 2017-06-12
  • 2017-03-15
  • 1970-01-01
  • 2011-04-14
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多