链接焦点在表单击

时间:2016-01-22 14:11:10

标签: javascript jquery angularjs

我有一个表,其中每行的第一个单元格包含一个链接。当用户在行上单击鼠标时,我想要同一行上的链接以获得焦点()。

我想用Angular指令做这件事。我使用Angular,但我认为解决方案归结为jQuery的使用。

这是我现在所拥有的简化版本:

<div ng-app="app">

    <table border="1" focus-on-link-please>
      <tr>
        <td><a href>Link A</a></td>
        <td>Some text</td>
        <td>Some text</td>
      </tr>
      <tr>
        <td><a href>Link B</a></td>
        <td>Some text</td>
        <td>Some text</td>
      </tr>
    </table>

</div>

JS:

var app = angular.module('app', [])

app.directive('focusOnLinkPlease', function() {
  return function(scope, elem, attrs) {

    elem.bind('click', function(event) {
      console.log('click!')
      event.target.closest('tr').find('a').focus(); // Does not work :(
    });

  }
});

Fiddle demo

任何提示?

2 个答案:

答案 0 :(得分:0)

写指令以获得焦点。 像这里How to set focus on input field? 使用绑定来连接东西:

   <table>
      <tr ng-click="focusA = true">
        <td><a href focus-me="focusA">Link A</a></td>
        <td>Some text</td>
        <td>Some text</td>
      </tr>
      <tr ng-click="focusB = true">
        <td><a href focus-me="focusB">Link B</a></td>
        <td>Some text</td>
        <td>Some text</td>
      </tr>
   </table>

答案 1 :(得分:-1)

我修改了我的jQuery以使其工作。

elem.bind('click', function(event) {
  console.log('click!')
  var tr = $(event.target).closest('tr') || $(event.target);
  if (tr) {
    tr.find('a').focus();
  }      
});

Fiddle解决方案。