Javascript 如何隐藏具有给定类的所有元素的父元素,但父元素也有特定的类?
我想隐藏具有类Javascript 如何隐藏具有给定类的所有元素的父元素,但父元素也有特定的类?,javascript,jquery,jquery-selectors,parent-child,Javascript,Jquery,Jquery Selectors,Parent Child,我想隐藏具有类parent的li元素的所有实例,这些实例具有类child-1的直接子div元素。下面是一个伪代码示例,其中方法hideParent()将隐藏所选元素的父元素: 下面是我的HTML示例,其中第二个和第三个li.parent元素应该被隐藏 <li class="parent"> <div class="child-0"> ... </div> </li> <li class="parent"> <div
parent
的li元素的所有实例,这些实例具有类child-1
的直接子div元素。下面是一个伪代码示例,其中方法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();
试试这个:
$("li.parent > div.child-1").parent().hide();
直接选择相关子元素,以其父元素为目标(由相关选择器过滤),然后隐藏它们
$("div.child-1").parent('li.parent').hide();
请参阅:直接选择相关的子元素,以其父元素为目标(通过相关选择器过滤),然后隐藏它们
$("div.child-1").parent('li.parent').hide();
请参阅:另一个选项是使用
过滤器:
$("li").filter(function () {
var $this = $(this);
var isParent = $this.hasClass("parent");
var childMatchCount = $this.children("div").filter(".child-1").length;
return isParent && childMatchCount;
}).hide();
演示:
尽管这可以通过几种方式进行优化。但对我来说,从非常明确的意义上讲,它更“可读”。使用jsperf,我能使用的最快的过滤器是:
$("li.parent").filter(function () {
return $(this).children("div.child-1").length;
}).hide();
@Joe的答案是最快的:$(“li.parent>div.child-1”).parent()
另一个选项是使用过滤器:
$("li").filter(function () {
var $this = $(this);
var isParent = $this.hasClass("parent");
var childMatchCount = $this.children("div").filter(".child-1").length;
return isParent && childMatchCount;
}).hide();
演示:
尽管这可以通过几种方式进行优化。但对我来说,从非常明确的意义上讲,它更“可读”。使用jsperf,我能使用的最快的过滤器是:
$("li.parent").filter(function () {
return $(this).children("div.child-1").length;
}).hide();
@乔的答案是最快的:$(“li.parent>div.child-1”).parent()
噢,哇。我本该想到这一点,现在却因为错过了这个简单的解决方案而感到愚蠢。非常好,谢谢你!哦,哇。我本该想到这一点,现在却因为错过了这个简单的解决方案而感到愚蠢。非常好,谢谢你!这也是一个有用的答案。虽然乔提供的答案排在第一位,但却是新的信息。对我来说,parent()
方法可以被过滤。我相信我将来会用这个。谢谢这也是一个有用的答案。虽然乔提供的答案排在第一位,但却是新的信息。对我来说,parent()
方法可以被过滤。我相信我将来会用这个。谢谢