jQuery 同时支持 HOVER 和 FOCUS(鼠标和键盘)

发布于 2024-08-17 10:37:53 字数 267 浏览 7 评论 0原文

我正在构建一个大型菜单,我希望能够通过悬停(使用鼠标)和焦点(例如通过键盘切换到它)来触发菜单。

这就是我目前正在做的事情:

$(".megaMenu-trigger").focus(function (){$(this).hover()});
$(".megaMenu-trigger").hover(function(){
    // do the stuff
});

这可行,但我想知道这是否是同时处理键盘和鼠标交互的理想方式。

I'm building a mega menu where I want to be able to trigger the menu via both a hover (using the mouse) and focus (such as tabbing to it via the keyboard).

This is what I'm presently doing:

$(".megaMenu-trigger").focus(function (){$(this).hover()});
$(".megaMenu-trigger").hover(function(){
    // do the stuff
});

This works, but am wondering if that's the ideal way to handle both keyboard and mouse interactions together.

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

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

发布评论

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

评论(2

平定天下 2024-08-24 10:37:53

您可以使用bind方法将多个事件绑定到一个操作,即

$('.megaMenu-trigger').bind("mouseenter focus mouseleave", 
        function(event) { console.log(event.type); }); 

you can use the bind method to bind multiple events to one action i.e.

$('.megaMenu-trigger').bind("mouseenter focus mouseleave", 
        function(event) { console.log(event.type); }); 
乱了心跳 2024-08-24 10:37:53

问题的答案是 UI 设计决策。

  • 鼠标悬停或 Tab 键是否应该始终优先于另一个?
  • 或者应该与时间相关,最新的甚至优先?
  • 相反的方法是保持菜单打开并禁用其他事件,直到菜单关闭。

我的 Mac 操作系统的工作方式似乎是最近发生的事件。也许一些网页设计师决定走不同的路线?

The answer to your problem is a UI design decision.

  • Should mouse hover or tabbing always take precedence over the other?
  • Or should it be time related where the most recent even takes precedence?
  • The opposite would to maintain the menu as open and disable other events until the menu is closed.

The way my Mac OS seems to work is the most recent event. Perhaps some web designers decided to go a different route though?

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