0

클릭 된 요소의 인덱스를 가져 오려고하지만 콘솔에 -1이 계속 표시됩니다.클릭 요소의 인덱스 가져 오기

<div ng-app='app' ng-controller='mainCtrl'> 
    <div app-click=""> 
    <div ng-repeat="json in myJson"> 
     <li>{{json}}</li> 
    </div> 
    </div> 
</div> 

JS :

.directive('appClick', function() { 
    return { 
    restrict: 'A', 
    scope: true, 
    controller: function($scope, $element) { 
     $element.bind("click",function(e){ 
      var index = Array.prototype.indexOf.call($element.children(), e.target); 
      console.log(index); 
     }); 
    } 
    } 
}); 

JSFiddle Demo

답변

4

다른 옵션은 지수에게

<div ng-app='app' ng-controller='mainCtrl'> 
    <div app-click=""> 
    <div ng-repeat="json in myJson"> 
     <li data-index="{{$index}}">{{json}}</li> 
    </div> 
    </div> 
</div> 

을 설정하고 클릭으로

e.target.dataset.index 
+0

이것에 대해 생각해보아야합니다! 고맙습니다. – user4756836

+0

이것은 키 누르기에 다른 행동을하는 것입니다 .. 만약 내가 enter 키가 클릭과 같은 행동을하기를 원한다면 ... 나는 입력을 누를 때 정의되지는 않지만 클릭 할 때 올바른 e.target을 얻습니다. – user4756836

+0

어떻게 li이 있습니까? 주요 언론? – epascarello

2

e.target 반환 리튬 요소, $ element.children (나는 nodelist

HTML에서 indexOf를 얻을 수 Array.prototype을 사용하고 있습니다) return div

var index = Array.prototype.indexOf.call($element.find("li"), e.target); 

angular.module('app', []).controller('mainCtrl', function($scope) { 
 
    $scope.myJson = ["mayank1", "mayank2", "mayank3", "mayank4", "mayank5", "mayank6", "mayank7", "mayank8", "mayank9"] 
 
}) 
 

 
.directive('appClick', function() { 
 
    return { 
 
    restrict: 'A', 
 
    scope: true, 
 
    controller: function($scope, $element) { 
 
     $element.bind("click",function(e){ 
 
     \t \t var index = Array.prototype.indexOf.call($element.find("li"), e.target); 
 
      console.log(index); 
 
     }); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script> 
 
<div ng-app='app' ng-controller='mainCtrl'> 
 
    <div app-click=""> 
 
    <div ng-repeat="json in myJson"> 
 
     <li>{{json}}</li> 
 
    </div> 
 
    </div> 
 
</div>

+0

한 질문을 읽을 것입니다. 여러 li이 있고 class = "list1"인 특정 li에 가고 싶다면 – user4756836

+0

또한 ... $ element.children()이 작동하지 않는 이유에 대해 설명해 주시겠습니까? – user4756836

+0

'.find ("li [class = 'list1']")'요소를 찾으려면 –

-1

당신이 뭘 하려는지에 정교한 : li
이 코드를 시도하지리스트를 이용? 그것이 당신이 그것을 디자인 한 방법을 보는 그것을 달성하는 더 나은 방법이 있다는 것은 거의 확실합니다.

+0

더 나은 방법은 무엇입니까? 내 지시문에있는 클릭 요소의 색인을 얻으려는 것입니다. – user4756836

관련 문제