javascript - Gibt es in Bezug auf ng-repeat ein Problem beim Abrufen der Elemente nach dem DOM-Rendering?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-12 09:25:54
0
2
908

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?

曾经蜡笔没有小新
曾经蜡笔没有小新

Antworte allen(2)
为情所困

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

淡淡烟草味

你先审查一下元素。确保它的 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。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage