如何使用angular.js中的jqlite

文档中的说明:

angular.element(element)

我自己的调用:

angular.element("xx").addClass("xx")

根本没法执行,有大神给讲解一下吗?

http://jsfiddle.net/twn39/sy38y/1/

阅读 32.6k
7 个回答

angular.element 虽然很接近 jQuery,但是直接通过 HTML tag 去获取元素还是不行的,最简单的办法是这样:

angular.element(document.querySelector('p'));

http://jsfiddle.net/sy38y/2/

看文档可以看到
angular.element() 参数要求是HTML string or DOMElement, 但是你写的是一个selector, 是不符合angular.element的参数要求的. 如果你想使用这种用法, 你需要添加jquery

angular在获取元素的时候,分为两种情况:在引入jquery和没有引入jqery的情况;
1、在引入jquery的情况下,通过angular.element('.类名')来直接操作元素。
2、在没有引入jquery情况下,angular.element(document.querySelector('.类名'));

改成这样:

    var par = document.getElementsByTagName('p')[0];
    angular.element(par).addClass('blue');

angular不建议直接操作DOM,所以如果你希望addclass,建议可以这么做(你的连接我无法打开,不知道你代码怎么写的,所以根据我自己的来吧)

HTML

<button ng-click="showActive()"></button>
<p ng-class="{'active':show===1}"></p>

js

$scope.showActive=function(){
    $scope.show=1;
}
angular.element(document).find('xx').addClass('yy')

是的,本来还想着通过ng-click吧当前点击的按钮对象传过去,但最后发现好像angular不允许这样做。。。
只好还是用angular内置的jQlite去处理了!

logo
101 新手上路
子站问答
访问
宣传栏