[英]jQuery using tab to go through dropdown menu links (keyboard accessibility)
我有一个css菜单,希望通过键盘交互进行访问。 我希望能够通过包括子菜单链接的每个链接进行制表。
如果下拉菜单焦点移至下一个父链接下拉菜单,则上一个下拉菜单应隐藏。
的HTML
<ul>
<li class="custom-MainMenu-TopNav-li">
<div>
<span><a href="#">Parent link 1</a></span>
<div>
<ul class="custom-MainMenu-SubNav-dropdown">
<li><a href="#">Sub Link</a></li>
<li><a href="#">Sub Link</a></li>
</ul>
</div>
</div>
</li>
<li class="custom-MainMenu-TopNav-li">
<div>
<span>Parent link 2</span>
<div>
<ul class="custom-MainMenu-SubNav-dropdown">
<li><a href="#">Sub Link</a></li>
<li><a href="#">Sub Link</a></li>
</ul>
</div>
</div>
</li>
</ul>
的JavaScript
accessibleDropdown();
function accessibleDropdown(){
jQuery('.custom-MainMenu-TopNav-li a').each(function(){
jQuery(this).focus(function(){
jQuery(this).addClass('focused');
var menuParent = jQuery(this).parent().next().find('ul');
jQuery(menuParent).css('display','block');
});
jQuery(this).blur(function(){
jQuery(this).removeClass('focused');
});
});
}
我不确定您期望得到什么结果以及需要什么结果,但是希望这会对您有所帮助。
由于命名约定和方法,我不得不重做您的示例,但是我想这就是您想要的...
这是一个演示,以防万一... JSFiddle
的HTML
<ul class="navbar">
<li class="navbar-item">
<a href="javascript:;">Parent Link</a>
<ul class="navbar-sub">
<li class="navbar-sub-item">
<a href="#url_redirect">One</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Two</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Three</a>
</li>
</ul>
</li>
<li class="navbar-item">
<a href="javascript:;">Parent Link</a>
<ul class="navbar-sub">
<li class="navbar-sub-item">
<a href="#url_redirect">One</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Two</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Three</a>
</li>
</ul>
</li>
<li class="navbar-item">
<a href="javascript:;">Parent Link</a>
<ul class="navbar-sub">
<li class="navbar-sub-item">
<a href="#url_redirect">One</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Two</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Three</a>
</li>
</ul>
</li>
<li class="navbar-item">
<a href="javascript:;">Parent Link</a>
<ul class="navbar-sub">
<li class="navbar-sub-item">
<a href="#url_redirect">One</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Two</a>
</li>
<li class="navbar-sub-item">
<a href="#url_redirect">Three</a>
</li>
</ul>
</li>
</ul>
的CSS
body {
margin: 10px;
}
.navbar,
.navbar .navbar-sub {
list-style: none;
margin: 0;
padding: 0;
}
.navbar > .navbar-item {
float: left;
}
.navbar > .navbar-item:last-child {
margin-right: 0;
}
.navbar > .navbar-item.active > .navbar-sub {
display: block;
}
.navbar > .navbar-item a {
text-decoration: none;
}
.navbar > .navbar-item > a {
background-color: #999;
padding: 10px 20px;
color: #696969;
display: block;
}
.navbar > .navbar-item > a:hover,
.navbar > .navbar-item > a:focus,
.navbar > .navbar-item.active > a {
background-color: #ccc;
}
.navbar .navbar-sub {
display: none;
}
.navbar .navbar-sub > .navbar-sub-item > a {
color: #ccc;
display: block;
padding: 5px 10px;
text-align: center;
background-color: #696969;
}
.navbar .navbar-item.active .navbar-sub-item > a:hover,
.navbar .navbar-item.active .navbar-sub-item > a:focus {
background-color: #999;
}
jQuery的
$('.navbar').on('mouseenter focusin', '.navbar-item > a', function () {
$(this)
.parent('.navbar-item')
.addClass('active')
.siblings('.navbar-item')
.removeClass('active')
});
在这里你去,简单的jQuery :)
// display drop down box when mouse is over $(".custom-MainMenu-TopNav-li a").mouseover(function(){ $(this).find(".custom-MainMenu-SubNav-dropdown").css("display", "block"); }); // hide drop down box when mouse leaves $(".custom-MainMenu-TopNav-li a").mouseleave(function(){ $(this).find(".custom-MainMenu-SubNav-dropdown").css("display", "none"); });
当鼠标悬停在/离开父div时,这基本上显示/隐藏了每个下拉菜单。
我认为集中显示dropbown菜单不是一个好主意,因为我相信您只能专注于某些元素(例如输入)。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.