【发布时间】:2013-03-05 23:38:11
【问题描述】:
我对 Angular 还很陌生。我想要的是在单击按钮时替换 div 的类。使用“ng-class”会更改页面上所有具有该类的 div 的类,我只想选择一个来替换。
这个jsfiddle 展示了我正在尝试做的事情。我正在尝试使用 jQuery,但正如您所见,它在这种情况下不起作用。我的猜测是有一种更“棱角分明”的方式来做到这一点。有什么建议吗?
这是jsfiddle中的代码:
<div ng-controller="MyCtrl">
<div class="test1">
Text1
</div>
<div class="test1">
Text2
</div>
<button ng-click="click($event)">Click</button>
</div>
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.click = function (e) {
var source = e.target || e.srcElement;
var div = source.prev("div.test1:first");
div.toggleClass('test1');
};
}
.test1 {
color: blue;
}
【问题讨论】:
-
ud喜欢选择一个...哪一个?
-
在这种情况下,我想选择它上面的第一个。但是,如果您单击小提琴中的按钮,它将将此错误记录到控制台:“TypeError: Object #
has no method 'prev'。”我也不相信 jQuery 是最好的方法。 -
well angular 本身使用 jQuery 的精简版本,所以如果你想使用 .prev() 之类的东西,你可能还需要引入标准的 jQuery 库。
-
是的...我在路径上有 jQuery。据我所知,它应该配置为使用它。这就是为什么我不确定它为什么会抛出那个错误。
-
它抛出错误是因为
source是一个 DOM 元素。您需要将其包装在 jQuery 中才能调用类似 prev() 的 jQuery 方法:$(source).prev(...)