2014-09-09 9 views
6

Wie erhalte ich die ID eines Elternelements des aktuell angeklickten Elements in AngularJS?Erhalte die ID des Elternelements des aktuell angeklickten Elements in AngularJS

<div id="d8" class="menutitles ng-scope" ng-repeat="title in list"> 
    <div class="right" ng-click="showsubmenu($event)">+</div> 
    <div class="left" ng-click="showsubmenu($event)">Unit 9</div> 
</div> 

Wie den Wert d8 in showsubmenu($event) Funktion zu bekommen?

Unten ist das, was ich versucht, aber es nicht

$scope.showsubmenu=function(obj) 
{ 
    alert(obj.target.parent.attributes.id) 
} 

Antwort

14

Es sollte parentNode D sein , nicht nur parent:

alert(obj.target.parentNode.id); 

Auch attributes ist redundant, da Sie direkt auf die Eigenschaft id zugreifen können.

Aber, da Sie ngRepeat haben, wird es ungültiges Markup erstellen, da IDs dupliziert werden. Vielleicht möchtest du das auch reparieren, vielleicht so oder benutze Klassen:

<div id="d8{{$index}}" class="menutitles ng-scope" ng-repeat="title in list"> 
    <div class="right" ng-click="showsubmenu()">+</div> 
    <div class="left" ng-click="showsubmenu()">Unit 9</div> 
</div> 
+0

Gibt es mehr 'ANGULARisch' Weg, dies zu tun? –

+0

@TusharShukla Sicher. Sie könnten zwei Direktiven wie '' und Kind '' zusammenfassen. Dann würde sich die Child-Direktive bei ihrem übergeordneten Controller registrieren. Aber für mich ist es viel komplexere Lösung und es lohnt sich nicht. – dfsq

4
<div id="d8" class="menutitles ng-scope" ng-repeat="title in list"> 
    <div class="right" ng-click="showsubmenu()">+</div> 
    <div class="left" ng-click="showsubmenu()">Unit 9</div> 
</div> 

Es sollte genug sein, funktioniert:

function showsubmenu($event){ 
    $($event.target).parent(); 

} 

Haben Sie einen schönen Tag

Verwandte Themen