suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Gibt es in Bezug auf ng-repeat ein Problem beim Abrufen der Elemente nach dem DOM-Rendering?

Nachdem ich ng-repeat zum Rendern der Daten verwendet habe, möchte ich den Stil eines bestimmten DOM-Elements ändern. Das Folgende ist der Beispielcode

    <ul ng-repeat="item in city" repeat-done="cityFinish()">
        <li class="city city{{$index}}">{{item}}</li>
    </ul>
    $scope.cityFinish = function() {
        $('.city').css('background', 'red');
        $('.city1').css('background', 'green');
    };

Unter ihnen $('.city').css('background', 'red');有效,但是$('.city1').css('background', 'green'); ist ungültig, was ist der Grund?

曾经蜡笔没有小新曾经蜡笔没有小新2779 Tage vor951

Antworte allen(2)Ich werde antworten

  • 为情所困

    为情所困2017-06-12 09:27:54

    我项目尝试是可以的 , city{{$index}}是从city0可以 你可以审查元素看下class是否变为city1 ,然后可以试着断点$('.city1')是否取到了dom元素

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:27:54

    你先审查一下元素。确保它的 class 是对的。
    首先,不知道你的 repeat-done 是如何写的。这应该不是 angularjs 自带的。
    其次,为什么不把颜色写到 css 中,然后用 ng-class 或者 ng-style 处理,一定要用 jQuery 呢。

    你的需求是不是,除了 index 为 1 的背景色为绿色,其他的都为红色?

    <ul ng-repeat="(index, item) in city">
      <li class="bg-red" ng-class="{'bg-green': $index == 1}">{{item}}</li>
    </ul>
    .bg-red {
      background: 'red';
    }
    
    .bg-green {
      background: 'green';
    }

    能不用 jQuery 就别用,更何况你还有内置的 jqLite 可以用。。。jQuery 作为第三方库,如果你不针对 angularjs 封装,那么你不能保证它的执行一定是在生成节点之后的,特别是对于 custom directive。

    Antwort
    0
  • StornierenAntwort