如何隐藏具有给定类的所有元素的父元素,但父元素也具有特定的类
How can I hide parent element of all elements with a given class, but the parent element also has a specific class?
我想隐藏类parent
的li元素的所有实例,这些实例具有类child-1
的直接子div元素。下面是一个伪代码示例,其中方法hideParent()
将隐藏所选元素的父元素:
$("li.parent > div.child-1").hideParent();
下面是我的HTML的一个例子,其中第二个和第三个li.parent
元素应该被隐藏。
<li class="parent">
<div class="child-0"> ... </div>
</li>
<li class="parent">
<div class="child-1"> ... </div>
</li>
<li class="parent">
<div class="child-1"> ... </div>
</li>
试试这个:
$("li.parent > div.child-1").parent().hide();
直接选择相关的子元素,瞄准它们的父元素(由相关的选择器过滤),然后隐藏它们。
$("div.child-1").parent('li.parent').hide();
: parent
文档
另一个选择是使用filter
:
$("li").filter(function () {
var $this = $(this);
var isParent = $this.hasClass("parent");
var childMatchCount = $this.children("div").filter(".child-1").length;
return isParent && childMatchCount;
}).hide();
演示:http://jsfiddle.net/GEhfP/
尽管这可以通过几种方式进行优化。但对我来说,它更"可读",在一个非常明确的意义上。使用jsperf,我能得到filter
最快的工作是:
$("li.parent").filter(function () {
return $(this).children("div.child-1").length;
}).hide();
@Joe的回答最快:$("li.parent > div.child-1").parent()
相关文章:
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- 在具有类的元素中隐藏元素
- 为什么动画完成后我的元素不再隐藏
- Ext.Window在显示时窃取表单元素;t隐藏时恢复
- Angular:如何根据模型中过滤的元素数量隐藏DOM元素
- 单击时元素应隐藏在父元素之外
- 如何将表行传递到具有所有输入元素的隐藏窗体
- 在具有可变高度的元素上隐藏溢出
- 如何使菜单容器在悬停两个元素以外的所有元素时隐藏
- jQuery - 在显示元素之前检查元素是否隐藏或仅显示它
- 聚合物 IronRessizeableBehavior 当“可调整大小”元素被隐藏/取消隐藏时,不会触发 Iron 调整
- 在显示一个元素时隐藏另一个元素
- 到达最后一个元素时隐藏下一步按钮
- Javascript:显示一个元素,隐藏另一个元素
- 如何使用 id 显示元素并隐藏其他元素
- 在没有匹配的后代元素时隐藏父元素
- 优化 html 元素的隐藏和显示
- 如何淡入包含类的元素'隐藏'在基础6中
- 获取所有以“”开头的元素;隐藏”;
- JQuery元素显示/隐藏和控制流