JQuery addClass не работает в инициализаторе контроллера angularjs

У меня есть следующий HTML:

<div data-ng-controller="CountdownCtrl" class="row countdown">
    <div ng-repeat="event in events" class="hidden event col-sm-4">
    ...

В контроллере для этого я пытаюсь удалить скрытый класс на событии DIV:

app.controller('CountdownCtrl', function($scope) {
    ...
    $(".countdown .event").removeClass("hidden").addClass("Hello");
    ...

Я пробовал бит JQuery за пределами контроллера, но он просто не горит, я пытался добавить в журнал, а также:

    $(".countdown .event").removeClass(function() { $log("Hello World"); return "hidden";}).addClass("Hello");

Страницы Jquery и примеры, кажется, не указывают на то, что мне нужен какой-либо итератор.

Я даже попробовал что-то похожее на их пример:

    $("p").removeClass(function() { $log("Hello World"); return "hidden";}).addClass("Hello");

но я иду без регистрации и никаких абзацев с «Hello» класс применяется.

Что я делаю не так?

5 ответов

  1. попробовать это,

      $(".countdown, .event").removeClass("hidden").addClass("Hello");
    
  2. Это работает? Вы забыли,

    $(".countdown,.event").removeClass("hidden").addClass("Hello");
    

    $(«.вступление.,demo») все элементы с классом » intro»
    или » демо»

    посмотреть w3schools

  3. Вместо этого сделайте это в directiveфункции ссылки определения:

     app.directive('event', function (){
          return {
             restrict: 'C', // C for class directives
             link: function (scope, el, attrs){
                  // do that here
                   $(el).removeClass("hidden").addClass("Hello");
             }
         }
     });
    

    Или другой вариант использовать ng-classтакие как :

       <div ng-repeat="event in events" class="event col-sm-4" ng-class='{hidden: 2+2==4}'>
    

    Здесь вы можете заметить, что у него должно быть какое-то условие истинности, которое будет добавлено, иначе оно не должно.

  4. Контроллер:

    app.controller('CountdownCtrl', function($scope) {
      // default eventClass value
      $scope.eventClass = 'hidden';
    
      ...
      // your logic
      $scope.eventClass = 'Hello';
      ...
    

    Формат html:

    <div data-ng-controller="CountdownCtrl" class="row countdown">
        <div ng-repeat="event in events" class="{{eventClass}} event col-sm-4">
    ...
    
  5. Вам просто нужно дождаться загрузки всех элементов.

    Один путь оборачивает его с $(document).ready()вне кодом регулятора:

    $( document ).ready(function() {
        $(".countdown .event").removeClass("hidden").addClass("Hello");
    });
    

    Однако имейте в виду, что если вы измените состояние без полной перезагрузки страницы, код не будет выполняться снова. В этом случае необходимо обработать событие изменения состояния и добавить код.