【问题标题】:How to add the `active` class on click of `li` element如何在单击“li”元素时添加“active”类
【发布时间】:2015-07-08 08:53:15
【问题描述】:

我对 AngularJS 很陌生。我需要知道如何使用它来处理这种情况。

我有一个包含值的数组。我正在使用ng-repeat 来迭代数组,它工作正常。我的要求是如何将一个类(active)添加到ulfirst 子级,并且每当用户点击时,被点击的元素应该获得active 类并删除 strong> active class 来自其余的 li 元素。

我在 JQuery 中很容易做到这一点,例如:

$('li').addClass('active').siblings().removeClass('active')

但是如何在这里达到同样的效果呢?

我的代码:

JavaScript 控制器

var myApp = angular.module("myApp", []);

myApp.controller("main", function ($scope) {

  $scope.items = [1,2,3,4,5];

  $scope.activate = function (item) {

    //how to active this item?

    //onload how to add class on first li?

  }

})

HTML

 <ul>

    <li ng-click="activate(item)" ng-repeat="item in items">
        {{item}}
    </li>

  </ul>

Live Demo

【问题讨论】:

标签: jquery angularjs


【解决方案1】:

这个怎么样。将当前活动项存储在您的控制器中,如果是一个类,则对其应用一个类。

HTML

<ul>
    <li 
        ng-click="activate(item)" 
        ng-repeat="item in items"
        ng-class="{'active': item == active}">{{item}}
    </li>
</ul>

JS 控制器

$scope.items = [1,2,3,4,5];
$scope.active = items[0]; // for onload first element active
$scope.activate = function (item) {
    $scope.active = item;
}

Plunker

【讨论】:

  • 但是在加载时第一个元素在这里没有活动类
  • 是的,同意。当li 处于活动状态时,我需要显示一些附加元素。怎么做?这是演示:plnkr.co/edit/kF5s39eKjqyhC6NE7O9G?p=preview
  • 尽量限制每个线程 1 个问题。用户搜索主题/答案要容易得多。
猜你喜欢
  • 1970-01-01
  • 2016-07-18
  • 2012-02-09
  • 2019-07-07
  • 2021-10-30
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多