获取前一个可见元素jquery

时间:2013-06-12 07:03:19

标签: javascript jquery

我有<ul>喜欢

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li style="display:none;">4</li>
<li class="curSelected">5</li>
<li>6</li>
</ul>

现在从<li> 5我想要引用前一个可见元素,即<li> 3

我怎样才能得到它?

我尝试了$('li.curSelected').prev(":visible:last");

但这不起作用。

请帮忙。

4 个答案:

答案 0 :(得分:13)

试试这个:

$('li.curSelected').prevAll(":visible:first");

prev()仅返回所选元素之前的直接元素。 prevAll()会返回之前的所有内容。

答案 1 :(得分:5)

您可以使用.prevUntil()搜索(但不包括)第一个可见项目,然后使用.prev()

$('.curSelected').prevUntil(':visible').prev()

<强>更新

正如评论中所指出的,如果前一个项目已经可见,这将不起作用。不幸的是,没有最佳的jQuery,所以这里有一个替代方案:

$prev = $('.curSelected')
do {
    $prev = $prev.prev();
} while ($prev.length && $prev.is(':hidden'));

答案 2 :(得分:4)

由于jQuery使用prev遍历dom,从当前到第一个,但只返回一个元素(前一个),你应该使用.prevAll

$("li.curSelected").prevAll(":visible:first");

请参阅此示例的working fiddle

答案 3 :(得分:0)

这是我的例子。完美,任何浏览器。

var elem = $( some_thing ).next();
while( elem && elem[0] != undefined && !elem.is( ':visible' ) )
    elem = elem.next();
if( elem && elem[0] != undefined )
    elem.doSomething();