6

私は<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>

5から<li>、前の可視要素、つまり<li>3の参照が必要です

どうすれば入手できますか?

私は試した$('li.curSelected').prev(":visible:last");

しかし、これは機能していません。

助けてください。

4

4 に答える 4

14

これを試して:

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

prev()選択した要素の直前の要素のみを返します。prevAll()以前のものをすべて返します。

于 2013-06-12T07:06:02.167 に答える
7

を使用.prevUntil()して、最初に表示されているアイテムまで (ただし、これを含まない) 検索し、次を使用できます.prev()

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

アップデート

コメントで指摘されているように、直前のアイテムが既に表示されている場合、これは機能しません。残念ながら、これに最適な jQuery はありません。そのため、別の方法を次に示します。

$prev = $('.curSelected')
do {
    $prev = $prev.prev();
} while ($prev.length && $prev.is(':hidden'));
于 2013-06-12T07:11:39.053 に答える
4

jQuery は を使用prevして現在の要素から最初の要素まで dom をトラバースしますが、1 つの要素 (前の要素) のみを返すため、 を使用する必要があります.prevAll

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

この例の実用的なフィドルを参照してください。

于 2013-06-12T07:07:48.910 に答える