2
我有一個支持導航的鍵盤列表。但是,在該列表中顯示並隱藏項目的附加jiggery pokery(在本例中未包含)。隱藏項目後,鍵盤導航需要繼續運行,但僅適用於可見項目。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>
太棒了。我沒有意識到它是一個空的數組,它正在返回!感謝你的完美。 –