jQuery - 如何找到没有类的下一个兄弟?

问题描述:

我有一个具有动态设置的扩展类的列表。我无法找到与只有可见元素相关的下一个列表项。 .siblings(':visible').next(':visible')在选择器为jQuery('.expanded')时似乎不起作用,可能是因为它正在寻找下一个扩展类。jQuery - 如何找到没有类的下一个兄弟?

<ul id="list_1" class="list"> 
    <li class="gridImage" data-id="Christmas"></li> //not visible 
    <li class="gridImage" data-id="Christmas"></li> //not visible 
    <li class="gridImage expanded" data-id="Easter"></li> 
    <li class="gridImage" data-id="Valentines"></li> //not visible 
    <li class="gridImage" data-id="Easter"></li> 
    <li class="gridImage" data-id="Miscellaneous"></li> //not visible 
</ul> 
+0

什么使“li”可见? – slicedtoad 2014-09-19 14:29:59

+0

@slicedtoad使用'show()'和'hide()'使另一个列表变得可见/不可见。 – 2014-09-19 14:32:23

这里是另一种方式: http://jsfiddle.net/slicedtoad/kqpbh3fv/

$('.expanded').nextAll(":visible").first() 

nextAll就像是下一个,但它抓住所有的选择器匹配以下的兄弟姐妹。首先只需要第一个。

+1

你真棒,谢谢! – 2014-09-19 14:47:07

+0

很好的答案,我很努力,但你之前回答;) – Hitesh 2014-09-19 14:52:27

你可以尝试像

.nextUntil(':visible').last().next() 

就是找到所有的兄弟姐妹,直到下一个可见的一个,再从该组中的最后一个(所以它的下一个兄弟应该是可见的)然后是它的下一个兄弟姐妹。

+0

这适用于我上面显示的代码,但在展开的类和可见/隐形物品开始发生变化。 – 2014-09-19 14:44:40