jQuery首个包含所有子元素的父元素

12

如何选择一组元素的第一个父元素,该组元素包含所有这些元素?

例如:

<body>
 <dl>
  <dt>Items:</dt>
  <dd>
   <ul>
    <li>Item 1<div class="item-info">...</div></li>
    <li>Item 2<div class="item-info">...</div></li>
    <li>Item 3<div class="item-info">...</div></li>
   </ul>
  </dd>
 </dl>
</body>
我想要这样的东西:
$('.item-info').commonParent();
并且它将返回相当于以下内容:
[$('ul')]

有没有使用jQuery选择器的简单方法来做到这一点?还是我必须编写一个插件?


4
您是否正在寻找所有元素的最近公共祖先? - Jamie Wong
父类可以包含其他类吗?还是你只想要只包含相同类的父类?$(".item-info").parents("ul:first")将会给你所有包含这些子元素的(ul)元素,并自动过滤重复项,所以在这种情况下,你只会得到一个ul。 - Andir
是的,我正在寻找一个最近公共祖先的通用版本。 - rossipedia
出于好奇,你为什么需要这样做?我真的想不到任何有用的应用。 - Jamie Wong
总之,我的问题是动态插入一个显示/隐藏所有按钮,但按部分分组,如果我决定使用不同的标签来列出我的项目列表,我不想改变我的Javascript代码。 - rossipedia
11个回答

0
我会这样做:过滤掉选择器父级,其中包含选择器集合中的所有元素。
jQuery.fn.commonParent = function() {
  var parent = this.parents();
  this.each(function() {
    parent = parent.has(this);
  });
  return parent.first();
};

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