我有一个表,其中每行的第一个单元格包含一个链接。当用户在行上单击鼠标时,我想要同一行上的链接以获得焦点()。
我想用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 :(
});
}
});
任何提示?
答案 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解决方案。