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

发布于 2024-10-07 00:53:13 字数 285 浏览 4 评论 0原文

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

这些选项卡只是 HTML 列表项

  • 当我使用箭头键到达最后一个子选项卡时,我希望它返回到下一个主选项卡,以便它可以显示自己的子选项卡选项卡,并在其中进行导航。

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

    非常感谢

    I have a set of tab (main-tabs) on a website and each tab has another set of tabs (sub-tabs).
    I want to use arrow keys on a keyboard to navigate the tabs, instead of a mouse.

    These tabs are just HTML list items <li>

    When I reach the last sub-tab with the arrow key, I want it to go back to the next main tab so it can display its own sub-tabs, and carry on the navigation inside it.

    My question is, how can I detect, in jQuery/javascript, when I've reached the last list item (tab) using the arrow keys i.e. the right arrow key?

    Many Thanks

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(3

    浅唱ヾ落雨殇 2024-10-14 00:53:13

    您可以使用 :last:last-child jQuery 中的选择器。根据

  • 标签的嵌套方式,您可能还必须使用 children() 与其一起起作用。
  • 例如,假设您有以下标记:

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

    这将选择最后一个顶级

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

    alt text


    这将选择向下遍历 DOM 的最后一个

  • 。在本例中,它是带有文本“子列表项”的
  • $('ul#nav li:last').css('border', '1px solid red');
    


    > 最后一个子级的任何

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

    将选择其父级alt text

    You might be able to use either the :last or :last-child selectors in jQuery. Depending on how your <li> tags are nested, you might also have to use the children() function along with it.

    For example, let's say you have the following markup:

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

    This would select the last top-level <li>

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

    alt text


    This would select the last <li> traversing the DOM downward. In this case it's the <li> with text "Sub list item"

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

    alt text


    This would select any <li> tags that are the last child of their parent

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

    alt text

    在你怀里撒娇 2024-10-14 00:53:13
    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 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;
        }
    }
    
    });
    

    Some thing like this, I guess.

    花开浅夏 2024-10-14 00:53:13

    您可以使用 .length 来查明 jQuery 选择器是否发现任何内容:

    var nextSubTab = $(currentSubTab).next("li");
    if (nextSubTab.length == 0) {
        // oops, end of this tab, switch to next tab
    }
    

    You can use .length to find out if a jQuery selector found anything:

    var nextSubTab = $(currentSubTab).next("li");
    if (nextSubTab.length == 0) {
        // oops, end of this tab, switch to next tab
    }
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文