当隐藏的元素有时可见时,如何选择我要使用jQuery的元素

时间:2019-01-29 15:41:54

标签: jquery

我有一个按钮,该按钮使用jQuery的slideToggle()函数显示或隐藏具有特定类的div,并且它工作正常,除非存在另一个曾经被隐藏但现在在混合中可见的div。

我还使用jQuery从按钮的click事件中选择我要的div,如下所示:

$(".MyButton").click(function () { var theDiv = $(this).next(".TheDivImAfter"); theDiv.slideToggle(); });

我了解到jQuery的next()函数实际上只是查看下一个元素,并且当在此之间存在一个曾经被隐藏但现在可见的元素时,next()函数会看到该元素,并且由于类不匹配,因此不选择任何内容。这是有道理的。

我也尝试过nextUntil(),但这也什么也没选择,这对我来说没有意义。我还尝试了find()first()siblings()并取得了不同程度的成功,最终想知道为什么没有siblingsUntil()是因为.TheDivImAfter和{ {1}}是兄弟姐妹。

我一直在尝试伪选择器,例如.TheDivThatWasOnceHidden

:not

但是在那些情况下它仍然不起作用。

有没有办法让它跳过或忽略曾经隐藏的div上的类?

我感谢任何人都能提供的帮助,但我仍然想知道为什么$(this).next(".TheDivImAfter:not(.TheDivThatWasOnceHidden)");无法正常工作。

谢谢

1 个答案:

答案 0 :(得分:1)

我认为您在focus()之后。以下是根据click() API的区别;

nextAll()

  

说明:获取匹配元素集中每个元素的所有后续同级元素,可选地由选择器过滤。

nextUntil()

  

说明:获取每个元素的以下所有同级,直到但不包括与选择器,DOM节点或传递的jQuery对象匹配的元素。

Traversal Functions

您可以看到主要区别在于nextAll()排除了提供的选择器匹配的元素。这两个函数都会使用一个过滤器,以精确到达您要使用的jQuery

nextUntil