2016-04-14 2 views
2

Как я могу получить tr вместо td-события?Получить таблицу <tr> при нажатии <td>

app.controller('myController', ['$scope'], function($scope) { 
    $scope.OnRowFocused = function (event) { 
     event.target.attributes.class.nodeValue = 'active'; 
    } 
}); 

<table> 
    <tr ng-click="OnRowFocused($event)"> 
     <td> 
      Column 1 
     <td/> 
     <td> 
      Column 2 
     <td/> 
    </tr> 
</table> 

Когда я нажимаю на любой столбец в строке, я всегда получаю td-событие вместо tr. Я хочу получить tr-событие, чтобы я мог выделить целую строку, когда пользователь взаимодействует с ней.

+0

вместо '' пользователя target' $ event.currentTarget' – uzaif

+0

event.currentTarget равна нулю. – lim0721lim

+0

Вы нашли решение? – uzaif

ответ

1

Использовать event.currentTarget, который даст вам текущий элемент, в котором происходит событие.

$scope.OnRowFocused = function (event) { 
    console.log('This is the correct element',event.currentTarget); 
    console.log("class list", event.currentTarget[0].classList) 
}; 

Я бы не рекомендовал идти для этого подхода, где вы, кажется, манипулирования DOM от контроллера. Это должно быть куда-то в директиве .

Demo Plunkr

+0

, но как я могу добавить к нему класс css? – lim0721lim

+0

решить: $ (event.currentTarget) .addClass ('success') – lim0721lim

+0

Звонок, я думал, вы не использовали jQuery..cool.do accpt answer .. –

0

event.target - это элемент, получивший щелчок.

Попробуйте использовать this в обработчике событий - this - это элемент, на котором зарегистрировано событие.

Смежные вопросы