2

简短的问题:是否有等效的$this.nextAll().filter(':visible').eq(0)in.next.nextUntiljQuery 函数?

场景:我有 3 里,其中隐藏了 2 里。现在我如何选择第三个什么li时候this#test

<ul>
    <li id="test">Item 1</li> <!-- From this li -->
    <li style="display: none">Item 2</li>
    <li>Item 3</li> <!-- Select this li using :visible -->
</ul>

演示:http: //jsfiddle.net/LgCuk/1/

注意:上面只是一个例子,实际列表很大,元素是随机隐藏的。所以我正在寻找可以选择下一个可见的东西li

4

3 回答 3

3

使用.next()and.nextUntil()将允许您不必遍历整个列表,并且会在找到第一个匹配项时停止 ( .nextUntil()),然后选择您想要的元素 ( .next())。它比直的便宜.nextAll()

var $this = $('#test');
$this.nextUntil(':visible').next().css('color', 'red');

jsFiddle 示例

于 2013-02-26T21:11:31.330 回答
1

怎么样

$this.nextAll(':visible:first')

演示

于 2013-02-26T21:02:42.530 回答
0

对不起,你是对的。我原来的帖子不正确。不过,这应该可以按您的意愿工作。

$(document).ready(function(){
$('li').each(function(index){
    if($(this).is(":visible")){
    alert(index + $(this).text());
    }
});

});

于 2013-02-26T21:06:00.493 回答