Angular要素はデフォルトでjqLiteでラップされます(Angular独自のjQuery実装)。プロジェクトにjQueryを追加した場合、要素は完全なjQueryでラップされます。
jQuerylitehttp://docs.angularjs.org/api/angular.elementで使用できるメソッドのリストは次のとおりです。
ご覧のとおり、にアクセスできるためparent()
、addClass()
依存関係としてjQueryを追加しなくても、多くのDOM操作能力を利用できます。
-*-
角度を使用してDOMを操作することはまったく問題ありません。ベストプラクティスは、ディレクティブから操作することです。これは、親要素にアクセスできる要素の小さな例です。
HTML
<div ng-app='app'>
<div id="someparent">
<div my-directive>
</div>
</div>
</div>
あなたのJSで
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
}
};
});
jsfiddle: http: //jsfiddle.net/jaimem/Efyv4/1/
もちろん、アプリを構築するときは、それ自体の要素のみを操作するディレクティブが必要になる場合があります。
-*-
また、Markが言及しているようngClass
に、独自のディレクティブを作成する代わりに、angularの既存のディレクティブを使用できます。何を達成したいのかは明確ではありませんが、ngCloakを確認することをお勧めします。