2013-12-17 66 views
5

我正在尝试使用AngularJS来查询我的视图的DOM。我需要获得所有具有“数据放置”属性的值为“top”的元素。在jQuery中,我会这样做:AngularJS - 通过属性值查找元素

var elements = $('[data-placement="top"]'); 

但是,我不知道如何与AngularJS做到这一点。有人能告诉我如何做到这一点?

谢谢!

+1

AngularJS不这样做。 jQuery这样做。在您的应用程序中加载jQuery并且它应该可以工作 – Abilash

+2

这并非完全正确:您可以使用自定义指令来做到这一点,这将是“角度”做事的方式。你能发布一些关于你的用例的更多信息吗? –

+1

Angular开发的黄金法则是永远不要触摸控制器的DOM。所以要回答你的问题有几个问题:你在哪里放置这个JavaScript代码,你打算如何处理这些元素?如果这段代码不在自定义指令中,你可能想退后一步,考虑以另一种方式做这件事。 –

回答

4

在AngularJS中,您不会直接从控制器执行DOM操作,您应该为此创建一个指令。您可以根据需要在指令内部使用JQuery。

无论如何,我认为你可以使用angular.element()与JQlite选择器,这里的文档angular.element

例子:

// find('#id') 
angular.element(document.querySelector('#id')) 
0

从你的问题我明白,你想找到需要的,我们可以使用$document这种情况下,某些条件atrributes元素。

你可以找到更多关于它的信息here

所以来到您的要求,你可以找到它。

$document.find("[attribute-name='attribute-value')"); 

这将返回包装在jQuery或jqLit​​e中的元素对象。但要使用它,您需要将$document注入您的控制器。所以你继续角度相关的操作。

另一种方法是angular.element

angular.element.find("[attribute-name='attribute-value')"); 

但是,这将返回与包装原始DOM元素或HTML字符串作为jQuery元素的元素。你可以找到更多关于它的信息here

我更喜欢使用$document作为Angular操作可以使用第一种方法完成。