javascript - AngularJS 以互斥方式将类应用于多个按钮

标签 javascript jquery css angularjs

我是 AngularJS 的新手,具有 jQuery 背景,并且仍在尝试进入 Angular 思维。 我有几个 button,例如:

<button class="btn active">btn1</button>
<button class="btn">btn2</button>
...
<button class="btn">btnN</button>

使用 jQuery 来实现我的目标,即一次只有一个 buttonactive class , 我会做

jQuery

$(".btn").on('click', function(){
 $(this).siblings().removeClass('active')
        .end()
        .addClass('active');
});

CSS

.active{ ... }

但我没有找到在 Angular 中执行此操作的通用方法。我找到了 3 个按钮的解决方案,但它变得粗鲁,尤其是当我的应用程序中有多个 route 时。

特别是,现在我使用的解决方案是:

标记

<li class="start" ng:click="selected = 1" ng-class="{active: selected == 1}">
 <a href="#contenuti> </a>
</li>
<li class="start" ng:click="selected = 2" ng-class="{active: selected == 2}">
 <a href="#utenti> </a>
</li>
<li class="start" ng:click="selected = 3" ng-class="{active: selected == 3}">
 <a href="#messaggi> </a> 
</li>

在 Controller 中(用于 Bootstrap 设置)

switch($location.path()){
 case '/contenuti/plot': 
  $scope.selected = 1;
  break;
 case '/utenti': 
  $scope.selected = 2;
  break;
 case '/messaggi': 
  $scope.selected = 3;
  break;
}

这是一个我不太喜欢的解决方案,我认为这不是一个很好的解决方案。 在此先感谢您的帮助。

jQuery 解决方案 Fiddle:http://jsfiddle.net/HS4d6/

最佳答案

欢迎来到Angular 世界——它与jQuery 有点不同。但你会爱上它的!

Angular 中有很多好东西,但其中最重要的是指令!

这是一个非常通用的解决方案脚手架,完全不用担心当前范围。它基本上使用指令初始化函数来进行实例间通信。如果您在将其扩展到您的特定需求时遇到问题,请告诉我。

app.directive('selectable', function(){

    var selected;

    var unselect = function(element) {
        element.removeClass('selected');
    }

    var select = function(element) {
        if (selected){
            unselect(selected);
        }
        selected = element;
        element.addClass('selected');
    }

    return {

        link : function(scope, element, attrs){

            element.on('click', function(){
                select(element);
            });

        }
    }
});

PLNKR

关于javascript - AngularJS 以互斥方式将类应用于多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661114/

相关文章:

javascript - 返回json中数组的所有值

javascript - Uncaught ReferenceError : 'somevar' is not defined

html - 如何实现2行+1列的网格布局

html - CSS 未应用于所有元素

html - 菜单在 IE8 上向左移动,但在 IE9 和其他浏览器上保持在正确位置

javascript - 使用 JavaScript 创建关联数组

javascript - 要动画的元素的初始状态

javascript - 我无法弄清楚为什么弹出窗口会在出现错误或发送时消失并重新出现

javascript - Javascript 加密函数中的 3DES 十六进制 key

javascript - 如何区分生成的元素和选定的元素?