2014-12-24 2 views
0

"div"요소의 "a"요소 안에있는 "span"요소의 클래스를 바꾸려고합니다.span의 클래스를 'a'내부의 id로 묶어 id로 묶습니다.

나는이 사업부가 :

<div id="songList" ng-repeat="el in tracksList"> 
<a ng-click="playSelectedSong($index)" class="list-group-item" id="{{$index}}"><h4 class="list-group-item-heading"><span id="playStopSpan" class="glyphicon glyphicon-play"></span>{{el.title}}</h4><p class="list-group-item-text"><span class="glyphicon glyphicon-stats"></span>Stats: <span class="glyphicon glyphicon-play"></span> {{el.playback_count}} </p></a> 

을 그리고 나는 ID playStopSpan와 스팬 요소의 클래스를 대체합니다. > - - tracksList의 각 요소에 대해>범위 사업부을 :

내 문서 트리 나는 이해한다.

나는 여러 가지 방법을 시도했지만 아직 시도하지 못했습니다. 지금까지 나는이 있습니다

$("#songList > #"+songNr+" > span#playStopSpan").removeClass().addClass("glyphicon glyphicon-pause"); 

songNr가 NG 클릭에서 ($ 지수)의 값입니다.

+0

사용 NG 수준의 https://docs.angularjs.org/api/ng/directive/ngClass 대신 컨트롤러에 JQuery와 DOM 조작에 혼합. –

+0

물론! 어리석은 나를 위해, 모든 클래스에 대해 잊어 버렸다. – kongshem

답변

1

이것은 당신이 NG-클래스를 사용하여 어떻게 할 것입니다 : 재생이 있지 않다면 비록 데모 연주에

<span class="glyphicon" ng-class="{ 'glyphicon-pause': el.paused, 'glyphicon-play': !el.paused}"> 

    $scope.tracksList = [ 
     {paused: true, title: 'First song', playback_count: 0} 
    ]; 

    $scope.togglePause = function (track) { 
    track.paused = !track.paused; 
    } 

이 교차한다.

http://plnkr.co/edit/UNcnBUP7eGewI7YRAOHU?p=preview

+0

글쎄, 거의 비슷하지만 내 질문에 조건을 제안하지 않았으므로 그 사실을 알 수 없다. 엘 $ 인덱스가 selectedIndex와 같거나 같은지 여부를 확인해야했습니다. 그래서 나는 지시어 컨트롤러에 $ scope.selectedIndex를 넣고 [$ index == selectedIndex] 조건을 ng-class에 추가했다. 어쨌든 고마워, 너는 나를 올바른 길로 인도한다. – kongshem