- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道操作 DOM 违反了 Angular 的规则,但在这种情况下,我不得不横向操作 DOM 来修改同级节点。
在 jQuery 中,您可以执行以下操作:
$(this).parent().addClass('.loading');
在 Angular 中,你会做这样的事情:
angular.element(this).parent().addClass('.loading');
当然这不起作用,因为 API 上没有 parent() 方法或 addClass() 方法支持。
这让我想到了一个问题,我还能如何做到这一点?
谢谢!
最佳答案
默认情况下,Angular 元素用 jqLite 包装(Angular 自己的 jQuery 实现)。如果您已将 jQuery 添加到您的项目中,则元素将使用完整的 jQuery 进行包装。
这是 jQuery lite http://docs.angularjs.org/api/angular.element 可用的方法列表
如您所见,您可以访问 parent()
和 addClass()
因此,无需添加 jQuery 作为依赖项,您就可以获得大量 DOM 操作能力。
-*-
使用 angular 操作 DOM 完全没问题,最佳实践是从指令中进行操作,这里有一个元素可以访问父元素的小例子
HTML
<div ng-app='app'>
<div id="someparent">
<div my-directive>
</div>
</div>
</div>
var app = angular.module('app', []);
app.directive('myDirective', function(){
return{
restrict: 'A',
link: function(scope, element, attributes){
console.log(element.parent().attr('id')); // "someparent"
element.parent().addClass('loading'); // adding loading class to parent
}
};
});
ngClass
而不是创建自己的指令。目前尚不清楚您想要实现的目标,但我建议您查看
ngCloak 。
关于angularjs - 使用 AngularJS 按摩 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337556/
我知道操作 DOM 违反了 Angular 的规则,但在这种情况下,我不得不横向操作 DOM 来修改同级节点。 在 jQuery 中,您可以执行以下操作: $(this).parent().addCl
我的任务是删除我的 laravel 应用程序中的按钮。 这是我的 Blade 文件删除按钮, id }}/tasks/{{ $task->id }}/delete" class="editInline
我使用此代码从 android 发送详细信息到电子邮件,但我只收到正文邮件,没有收到姓名、电话和电子邮件。这是我的代码: public class ActivityContactUs extends
我是一名优秀的程序员,十分优秀!