2
私はナビゲーションのキーボードサポートを持ったリストを持っています。しかし、リスト内の項目を表示したり隠したりする追加のジガーポケリー(この例では表示されていない)があります。項目が隠された後、キーボードナビゲーションは機能し続ける必要がありますが、目に見える項目のみが必要です。jQuery nextAllは最後の要素で停止しませんか?
私はこれをうまく使っています。この問題は、最後に表示された項目が現在の項目であり、ユーザがもう一度押すと発生します。現在のクラスが削除され、存在しない項目に移動しようとします。上をナビゲートするときも同じことが起こります。
表示されているアイテムのみをナビゲートし、最初と最後の表示アイテムで停止するにはどうすればよいですか?
jQuery(document).keydown(function(e) {
e.preventDefault();
if (e.keyCode == 38) { // Capture Arrow Up key 38
var currentItem = jQuery(".options").children("li.current").removeClass("current").prevAll(':visible:first').addClass("current");
} else if (e.keyCode == 40) { // Capture Arrow Down key 40
var currentItem = jQuery(".options").children("li.current").removeClass("current").nextAll(':visible:first').addClass("current");
}
});
.current {
border: solid 1px #f60 !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="options">
<li class="current"><a href="#"><span>WW Portfolio Regions</span><span class="hidden">0</span></a>
</li>
<li><a href="#"><span>EMEA</span><span class="hidden">1</span></a>
</li>
<li><a href="#"><span>Americas</span><span class="hidden">2</span></a>
</li>
<li><a href="#"><span>AP</span><span class="hidden">3</span></a>
</li>
<li><a href="#"><span>NE IOT</span><span class="hidden">4</span></a>
</li>
<li><a href="#"><span>SW IOT</span><span class="hidden">5</span></a>
</li>
<li><a href="#"><span>CCE IOT</span><span class="hidden">6</span></a>
</li>
<li><a href="#"><span>MEA IOT</span><span class="hidden">7</span></a>
</li>
</ul>
恐ろしい。私はそれが戻っていた空の配列だったことに気付かなかった!それは完璧です、ありがとう。 –