2016-01-22 4 views
0

У меня есть таблица, где первая ячейка на каждой строке содержит ссылку. Когда пользователь mouseclicks в строке я хочу ссылку в той же строке, чтобы получить фокус().Ссылка фокуса на таблицу нажмите

Я хочу сделать это с помощью Угловой директивы. Я использую 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

Любые советы?

+0

Это неправильная скрипка? –

+1

'event.target.closest ('tr'). QuerySelector ('a'). Focus();' @ aw04 Это не было, теперь исправлено https://jsfiddle.net/azoxwym6/2/ –

+0

@A. Вольф, снова попробуй скрипку. Должно быть хорошо – HoffZ

ответ

-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 с решением.

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> 
Смежные вопросы