如何在 ng-click 上为 AngularJS 添加类以查找多个元素(巧妙地)
How to add class in AngularJS on ng-click for multiple elements (smartly)?
我有2个"列表"(在HTML中)。我想使我单击的任何选项都添加一个将li
元素的background-color
更改为红色的类。如果再次单击任何单个选项,则会删除该类(因此背景将恢复为白色):
这是我当前 HTML 页面/模板中的列表外观:
列表 A
<ul>
<li>Something 1</li>
<li>Something 2</li>
</ul>
列表 B
<ul>
<li>Otherthing A</li>
<li>Otherthing B</li>
<li>Otherthing C</li>
</ul>
我目前的状态是让每个li
都有自己的表达式,有自己的$scope
变量来跟踪真或假。(个人$scope
可变含义。 $scope.otherthingaclicked = true
、$scope.otherthingbclicked = true
、$scope.otherthingcclicked=false
等)
<li ng-class="expression">Otherthing A</li>
必须有更好的方法。我怎样才能让它更智能?
是的,有一个更好的解决方案。以下是 Angular 指令的用法:
myApp.directive("toggleClass", function() {
return {
link: function($scope, element, attr) {
element.on("click", function() {
element.toggleClass("option-selected");
});
}
}
});
然后,将其应用于您的li
:
<ul>
<li toggle-class>Something 1</li>
<li toggle-class>Something 2</li>
</ul>
而且,您的 CSS:
li.option-selected {
background: red;
}
var myApp = angular.module("sa", []);
myApp.directive("toggleClass", function() {
return {
link: function($scope, element, attr) {
element.on("click", function() {
element.toggleClass("option-selected");
});
}
}
});
li.option-selected {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<ul ng-app="sa">
<li toggle-class>Something 1</li>
<li toggle-class>Something 2</li>
<li toggle-class>Something 3</li>
<li toggle-class>Something 4</li>
</ul>
您是否要使用(或保存)用户单击li
项目的结果?如果这样做,则可能需要为每个li
元素保存一个布尔值。
//JS
$scope.listA = [
{ label: "Something 1", checked: false },
{ label: "Something 2", checked: false },
{ label: "Something 3", checked: false }
];
然后使用ng-repeat
和ng-click
来处理它。
<!-- HTML -->
<ul>
<li ng-repeat="item in listA" ng-class="{ 'selected': item.checked }">
<a href="javascript://"
ng-click="item.checked = !item.checked">{{item.label}}</a>
</li>
</ul>
相关文章:
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- 查找元素高度,包括边距
- 为什么可以't PHP查找可以使用JS或jQuery访问的元素
- 查找数组javascript中包含的元素类型
- 在AngularJs中查找元素并更改其内容
- JavaScript-如何按类查找元素并删除此类
- 在Meteor中如何查找DOM元素(渲染后)
- jquery在元素中查找文本节点,并使用标记进行连接和包装
- 如何按id查找两个类中任一类的子元素
- 从json数组中查找满足条件的特定元素的值
- 如何通过来自不同父元素的相同元素查找 HTML 元素
- 为动态创建的元素查找前一个同级的值
- HTML5 音频元素 - 查找滑块 - 无法在“HTMLMediaElement”上设置“当前时间”属性:提供的双精度值
- 具有用户添加的行的窗体,以及对每行的输入元素查找
- 选择tr及其“所有子元素”;-查找jquery选择器
- 为每个元素查找data()键值对
- 如何根据兄弟元素中排序的元素查找索引
- 为多类元素中某一类的元素查找Dom节点索引
- 如何使用多行元素查找offsetWidth