检测jquery/javascript中的最后一个列表项

检测jquery/javascript中的最后一个列表项,javascript,jquery,arrow-keys,Javascript,Jquery,Arrow Keys,我在网站上有一组选项卡(主选项卡),每个选项卡都有另一组选项卡(子选项卡)。 我想使用键盘上的箭头键来导航选项卡,而不是鼠标 这些选项卡只是HTML列表项 $('ul#nav > li:last').css('border', '1px solid red'); 当我用箭头键到达最后一个子选项卡时,我希望它返回到下一个主选项卡,这样它就可以显示自己的子选项卡,并在其中进行导航 我的问题是,在jQuery/javascript中,当我使用箭头键(即右箭头键)到达最后一个列表项(选项卡)时,

我在网站上有一组选项卡(主选项卡),每个选项卡都有另一组选项卡(子选项卡)。 我想使用键盘上的箭头键来导航选项卡,而不是鼠标

这些选项卡只是HTML列表项
  • $('ul#nav > li:last').css('border', '1px solid red');
    
    当我用箭头键到达最后一个子选项卡时,我希望它返回到下一个主选项卡,这样它就可以显示自己的子选项卡,并在其中进行导航

    我的问题是,在jQuery/javascript中,当我使用箭头键(即右箭头键)到达最后一个列表项(选项卡)时,如何检测


    非常感谢

    您可以使用jQuery中的或选择器。根据
  • 标记的嵌套方式,您可能还必须同时使用该函数

    例如,假设您有以下标记:

        <ul id="nav">
            <li>List item</li>
            <li>List item with sub items
                <ul>
                    <li>Sub list item</li>
                </ul>
            </li>
        </ul>
    


    这将选择向下遍历DOM的最后一个
  • 。在这种情况下,它是带有文本“子列表项”的

  • 这将选择作为其父项最后一个子项的任何
  • 标记

    $('ul#nav li:last-child').css('border', '1px solid red');
    


    我猜是这样的。

    您可以使用
    .length
    来确定jQuery选择器是否找到了任何内容:

    var nextSubTab = $(currentSubTab).next("li");
    if (nextSubTab.length == 0) {
        // oops, end of this tab, switch to next tab
    }
    
    var maintabs = $('.maintab'),
        active_maintab_eq = 0,
        active_subtab_number = 1;
    
    $(document).keyup( function(e){
    
    if (e.which == 39) {
    // right arrow key pressed
        if ( active_subtab_number == maintabs.eq(active_maintab_eq).find('li').length ) {
            // go to next main-tab
            // and reset active sub-tab counter
            ++active_maintab_eq;
            active_subtab_number = 1;
        } else {
            ++active_subtab_number;
        }
    }
    
    });
    
    var nextSubTab = $(currentSubTab).next("li");
    if (nextSubTab.length == 0) {
        // oops, end of this tab, switch to next tab
    }