[英]Jquery addClass doesn't seem to work in angularjs controller initialiser
我有以下HTML:
<div data-ng-controller="CountdownCtrl" class="row countdown">
<div ng-repeat="event in events" class="hidden event col-sm-4">
...
为此,我正在尝试删除事件DIV上的隐藏类:
app.controller('CountdownCtrl', function($scope) {
...
$(".countdown .event").removeClass("hidden").addClass("Hello");
...
我也尝试过在控制器外部使用JQuery位,但是似乎并没有触发,我也尝试过添加日志记录:
$(".countdown .event").removeClass(function() { $log("Hello World"); return "hidden";}).addClass("Hello");
jQuery页面和示例似乎并不表明我需要任何迭代器。
我什至尝试了一些接近他们的例子:
$("p").removeClass(function() { $log("Hello World"); return "hidden";}).addClass("Hello");
但我没有记录日志,也没有应用“ Hello”类的段落。
我究竟做错了什么?
而是在directive
定义链接函数中执行此操作:
app.directive('event', function (){
return {
restrict: 'C', // C for class directives
link: function (scope, el, attrs){
// do that here
$(el).removeClass("hidden").addClass("Hello");
}
}
});
或者另一个选择是使用ng-class
例如:
<div ng-repeat="event in events" class="event col-sm-4" ng-class='{hidden: 2+2==4}'>
在这里您可以注意到它应该有一些真实的条件要添加,否则就不应该添加。
这管用吗? 您忘记了,
$(".countdown,.event").removeClass("hidden").addClass("Hello");
$(“。intro,.demo”)具有“ intro”或“ demo”类的所有元素
控制器:
app.controller('CountdownCtrl', function($scope) {
// default eventClass value
$scope.eventClass = 'hidden';
...
// your logic
$scope.eventClass = 'Hello';
...
HTML:
<div data-ng-controller="CountdownCtrl" class="row countdown">
<div ng-repeat="event in events" class="{{eventClass}} event col-sm-4">
...
您只需要等待,直到所有元素都已加载。
一种方法是在控制器代码外用$(document).ready()
包装它:
$( document ).ready(function() {
$(".countdown .event").removeClass("hidden").addClass("Hello");
});
但是,请记住,如果在不重新加载整个页面的情况下更改状态,则代码将不会再次运行。 在这种情况下,您需要处理状态更改事件,并在其中添加代码。
尝试这个,
$(".countdown, .event").removeClass("hidden").addClass("Hello");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.