如何使用键盘通过
    进行导航
  • 元素

发布于 2024-12-02 21:37:00 字数 1003 浏览 0 评论 0原文

可能的重复:
使用 jquery 的菜单键盘导航

我使用 < 创建了一个菜单ul>

  • 标签,并在用户按文本框中的 Enter 键时将其显示给用户。他可以使用鼠标选择菜单项(在菜单中导航),但我还想允许他使用键盘的向上/向下按钮从该菜单中选择项目。
  • 有没有办法使用 jQuery 或 CSS 来做到这一点?

    我的菜单具有以下结构:

    <div class="services">
      <div class="items">
        <ul>                           
            <li class="mail-icon"><a href="#" id="mail"><?php echo $langmsg['mail']; ?></a></li>
            <li class="forum-icon"><a href="#" id="forum"><?php echo $langmsg['forum']; ?></a></li>
            <li class="chat-icon"><a href="#" id="chat"><?php echo $langmsg['chat']; ?></a></li>
        </ul>
      </div>
    </div>
    

    注意:

  • 元素也有背景图像。
  • Possible Duplicate:
    KeyBoard Navigation for menu using jquery

    I created a menu using <ul> <li> tags and showing it to the user when he presses Enter key in the textbox. He can select items of the menu (navigate in menu) using mouse but I want also to allow him to select items from that menu using up/dow buttons of the keyboard for example.

    Is it any way to do that using jQuery or CSS?

    My menu has following structure:

    <div class="services">
      <div class="items">
        <ul>                           
            <li class="mail-icon"><a href="#" id="mail"><?php echo $langmsg['mail']; ?></a></li>
            <li class="forum-icon"><a href="#" id="forum"><?php echo $langmsg['forum']; ?></a></li>
            <li class="chat-icon"><a href="#" id="chat"><?php echo $langmsg['chat']; ?></a></li>
        </ul>
      </div>
    </div>
    

    Note: <li> element has a background image also.

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

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

    发布评论

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

    评论(2

    幸福%小乖 2024-12-09 21:37:00

    工作 jsFiddle

    以下是如何处理循环选择:

    if (e.keyCode == 38) { // up
        var selected = $(".selected");
        $(".services li").removeClass("selected");
    
        // if there is no element before the selected one, we select the last one
        if (selected.prev().length == 0) {
            selected.siblings().last().addClass("selected");
        } else { // otherwise we just select the next one
            selected.prev().addClass("selected");
        }
    }
    

    css:

    .services li.selected {
        background-color: grey;   
    }
    

    Working jsFiddle

    Here is how to handle circular selection:

    if (e.keyCode == 38) { // up
        var selected = $(".selected");
        $(".services li").removeClass("selected");
    
        // if there is no element before the selected one, we select the last one
        if (selected.prev().length == 0) {
            selected.siblings().last().addClass("selected");
        } else { // otherwise we just select the next one
            selected.prev().addClass("selected");
        }
    }
    

    css:

    .services li.selected {
        background-color: grey;   
    }
    
    淡淡绿茶香 2024-12-09 21:37:00

    这已经是可能的,只需使用 HTML,使用“tab”键,然后使用“Enter”键。您可以将 CSS 样式 a:hover 加倍 a:focus,这将突出显示这种可能性 =)

    It's already possible, just with HTML, with "tab" key, then "Enter" key . You can double your CSS style a:hover by a a:focus, which will highlight this possibility =)

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文