Angular指令:将keydown绑定到anchor元素

时间:2015-11-12 19:41:49

标签: javascript jquery angularjs

我有以下指令:

.directive('hasFocus',function(){
   return{
      restrict: 'A',
      link : function(scope,element,attrs){
           element.on('keydown',function(e){    
                switch(e.which){
                        case 38 : 
                            e.preventDefault(); 
                            selectNextButton($(this),true);
                        break;
                        case 40 : 
                            e.preventDefault(); 
                            selectNextButton($(this));
                        break;
                    }
                });
       }
   }
});

当我将它附加到按钮时,这可以正常工作,但是当我附加到锚点时不起作用。

<button id="mybutton" has-focus>the button</button>


<a id="mybutton" data-ng-click="doSomething()" has-focus>the anchor</a>

我希望能够在用户使用方向箭头导航时捕获 e.which

是否无法将keydown事件绑定到锚点?

https://api.jquery.com/keydown/声明它可以:

&#34; 当用户第一次按下键盘上的键时,keydown事件将发送到元素。它可以附加到任何元素,但事件仅发送到具有焦点的元素。&#34;

1 个答案:

答案 0 :(得分:1)

如果anchor中存在不存在 href属性,则您无法在点击时为anchor代码设置焦点}。这是stackoverflow上的answer,其中包含能够接收DOM element的{​​{1}}列表。您可以做的是将focus属性添加到href,它应该根据您的期望而有效。 Fiddle