【问题标题】:Angular.js How to insert css class on click and to remove all othersAngular.js如何在单击时插入css类并删除所有其他类
【发布时间】:2016-07-05 14:22:43
【问题描述】:

当我点击我的 span 元素时,我将两个 css 类应用到我的 html 中。

现在我有一个边框,看起来很好,我想保留这个。

但是: 所以如果我点击我在图标<i> 中所说的图标,图标颜色会变为蓝色。

但我不想删除包含边框的 span 的功能。

谢谢。

html + 角度

<div ng-app>
  <div>
    <br>
    <i ng-class='{"gamepad-red":tog==1}' class="fa fa-lg fa-gamepad"></i>
    <span id='1' ng-class='{"myclass":tog==1}' ng-click='tog=1'>span 1</span>
  </div>

  <div>
    <br>
    <i ng-class='{"gamepad-red":tog==2}' class="fa fa-lg fa-gamepad"></i>
    <br/><span id='2' ng-class='{"myclass":tog==2}' ng-click='tog=2'>span 2</span>
  </div>
</div>

css:

.myclass {
  border: dotted pink 3px;
}

.gamepad-red {
  color: red;
}

.gamepad-blue {
  color: blue;
}

jsfiddle:http://jsfiddle.net/zvLvg/286/

【问题讨论】:

  • 你必须反转单引号和双引号:ng-class="{'myclass':tog==2}"
  • 我不明白你能提供一个jsfiddle吗?上面的代码正在运行,你明白我要归档的内容吗?
  • @noob-fella 有一个小提琴链接 - 在底部
  • 是的,这是我提供的 :)
  • @noob-fella 哦,对不起 :)

标签: angularjs


【解决方案1】:

我已将 span click 的效果移至包装 div 并使用父子 CSS 将红色应用于 i 元素。

点击图标会触发一个单独的布尔值来控制本地类

如果只能选择一个,则可以使 iTog1 和 iTog2 的行为类似于 tog

.selected-gamepad > span {
  border: dotted pink 3px;
}

.selected-gamepad > i {
  color: red;
}

.gamepad-blue,
.selected-gamepad .gamepad-blue{
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>

<div ng-app>
  <div ng-class="{'selected-gamepad':tog==1}">
    <br>
    <i class="fa fa-lg fa-gamepad" ng-class="{'gamepad-blue': iTog1}" ng-click="iTog1 = !iTog1"></i>
    <span id='1' ng-click='tog=1'>span 1</span>
  </div>

  <div ng-class="{'selected-gamepad':tog==2}">
    <br>
    <i class="fa fa-lg fa-gamepad"  ng-class="{'gamepad-blue': iTog2}" ng-click="iTog2 = !iTog2"></i>
    <span id='2' ng-click='tog=2'>span 2</span>
  </div>
</div>

【讨论】:

  • 非常感谢,几乎:),我想要做的是当控件是直接单击时更改为蓝色明白吗?只需在图标中应用这些类,在这种情况下我不需要跨度边框,我很清楚,我确实编辑了我的问题。再次感谢您
  • 代码已更新。我认为这有你要找的东西
  • 再次抱歉,只是最后一件事,一切正常完美,但是当我单击 span 图标为蓝色时,图标保持蓝色,并且当我单击 span 图标时可以改成红色?谢谢
  • ng-click='tog=2' 更改为ng-click='tog=2; iTog2 = false;'(iTog1 类似)应该这样做。如果您要增加更多复杂性,我建议您将点击功能移至 javascript 控制器
  • 完美,工作,你是最好的,你想更新问题吗?无论如何,非常感谢。
猜你喜欢
  • 2017-04-06
  • 2018-03-17
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
相关资源
最近更新 更多