我有一个<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");
但这不起作用。
请帮忙。
我有一个<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");
但这不起作用。
请帮忙。
您可以使用.prevUntil()
最多搜索(但不包括)第一个可见项目,然后使用.prev()
:
$('.curSelected').prevUntil(':visible').prev()
更新
正如评论中所指出的,如果前一个项目已经可见,这将不起作用。不幸的是,没有最佳的 jQuery,所以这里有一个替代方案:
$prev = $('.curSelected')
do {
$prev = $prev.prev();
} while ($prev.length && $prev.is(':hidden'));
这是我的例子。完美运行,任何浏览器。
var elem = $( some_thing ).next();
while( elem && elem[0] != undefined && !elem.is( ':visible' ) )
elem = elem.next();
if( elem && elem[0] != undefined )
elem.doSomething();