简体   繁体   English

下拉菜单不适用于键盘

[英]Dropdown menu not working with the keyboard

Can some one help me with this drop down menu, the problem that I'm having is that not working with the keyboard, If you tab on the first item of the menu it open the menu but is not possible to navigate thru the items inside the drop menu. 有人可以帮我这个下拉菜单吗,我遇到的问题是无法使用键盘,如果您在菜单的第一项上按Tab键,则会打开菜单,但无法浏览其中的各项下拉菜单。

Demo http://jsfiddle.net/4S3w8/ 演示http://jsfiddle.net/4S3w8/

CSS: CSS:

#menu{
    width:200px;
    background:#444;
}
.noBullets
{
    list-style: none;
    padding-left: 0px;  
}
#menu li a{
    padding:15px;
}
#menu a{
    display:block;
    color:#fff;
}
#menu ul ul{
    display:none;
    background:#000;
}
#menu ul ul a:hover{
    background:#222;
}

HTML: HTML:

<div id="menu">
<ul class="noBullets">
    <li><a href="#">Home</a>
      <ul>
      <li><a href="#">About us</a></li>
      <li><a href="#">Direcctions</a></li>
      <li><a href="#">Form</a></li>
      </ul>
    </li>
    <li><a href="#">ontact Us</a></li>
</ul>
</div> 

JS: JS:

   $('#menu li:has(ul)').hover(function(){
        $(this).find('> ul').stop().slideToggle(400); 
    });

   $('#menu li:has(ul)').focus(function(){
    $(this).find('> ul').stop().slideToggle(400); 
});

I fixed this by adding some specific tabindex's and changing the focusin event to fire slideDown and the focusout event to fire slideUp. 我通过添加一些特定的tabindex并将focusin事件更改为fire slideDown以及focusout事件更改为slideUp来解决此问题。

Code is here: 代码在这里:

HTML HTML

<div id="menu">
  <ul class="noBullets">
    <li><a href="#"  tabindex='0'>Home</a>
      <ul>
        <li><a href="#" tabindex='0'>About us</a></li>
        <li><a href="#" tabindex='0'>Direcctions</a></li>
        <li><a href="#" tabindex='0'>Form</a></li>
      </ul>
    </li>
    <li><a href="#" tabindex='0'>Contact Us</a></li>
  </ul>
</div>

JS JS

$('#menu li:has(ul)').hover(
    function(){
        $(this).find('> ul').stop().slideDown(400); 
    },
    function(){
        $(this).find('> ul').stop().slideUp(400);
    }                       
);

$('#menu li:has(ul)').focusin(function(){
    $(this).find('> ul').stop().slideDown(400); 
});
$('#menu li:has(ul)').focusout(function(){
    $(this).find('> ul').stop().slideUp(400); 
});

JS Fiddle is here: JS Fiddle在这里:

http://jsfiddle.net/4S3w8/2/ http://jsfiddle.net/4S3w8/2/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM