如何使用jquery排除子选择器中的子项?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用jquery排除子选择器中的子项?相关的知识,希望对你有一定的参考价值。
我有一个父元素div #mmm-a
设置为visibility
,hidden
由之前的on click
函数和我使用以下代码使它重新出现在页面上(点击):
jQuery("#mmm-a").css("visibility", "visible").fadeTo(300, 1);
这工作正常,但当我试图从其父div #mmm-b
排除一个孩子#mmm-a
它不起作用,我试过这个(和变化):
jQuery("#mmm-a").not("#mmm-b").css("visibility", "visible").fadeTo(300, 1);
我的代码出了什么问题?如何让整个div再次可见,但隐藏其中的一个元素?
jQuery("#mmm-a")
仅选择ID为“mmm-a”的单个元素。 .not("#mmm-b")
不排除任何选择 - 它仍然是一个单元素列表。 (唯一可行的方法是,如果相同的元素同时具有两个ID:那么.not()
将排除它,并使用零元素选择 - 但这是不可能的,因为一个元素不能有两个ID。)
排除单个孩子的多元素选择看起来更像$('#mmm-a').find(':not(#mmm-b)')
或$('#mmm-a :not(#mmm-b)')
- 这些将返回mmm-a的所有子元素的列表,这些元素不是mmm-b。
但这也不会对你有所帮助,因为你正在使用fadeTo
来激活元素的不透明度,而不是它的可见性。不透明度始终会影响子元素:零不透明度元素的所有内容始终为零不透明度,因此无法从中排除子元素。
与不透明度不同,可以从visibility
规则中排除子元素:
#a {visibility:hidden}
#b {visibility:visible}
<div id="a"> hidden parent
<div id="b">visible child</div>
</div>
jQuery("#mmm-a").not("#mmm-b")
意思是选择#mmm-a
而不是mmm-b
,而你需要从孩子名单中排除特殊孩子。
请改用它
$("#mmm-a :not(#mmm-b)").css("visibility", "visible");
#mmm-a {visibility: hidden}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mmm-a">
<div>1</div>
<div id="mmm-b">#mmm-b</div>
<div>3</div>
</div>
以上是关于如何使用jquery排除子选择器中的子项?的主要内容,如果未能解决你的问题,请参考以下文章