我有<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");
但这不起作用。
请帮忙。
答案 0 :(得分:13)
答案 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();