1

我正在使用一个指令,我在它的链接函数中获得了 DOM 元素,并且我有一个我想要访问的元素。

IE

// element = <directive>
//             ...
//             <div id="target"></div>
//             ...
//           </directive>

如果我想获取元素,例如做一个.click()事件,我需要使用 ' document' 对象,因为我还没有找到立即直接访问该#target元素的方法。

关于正确方法的任何想法?不幸的是,jqLit​​e 只为我们提供了一个find()您无法通过idnot进行搜索的功能class

4

1 回答 1

0

就个人而言,当我使用 angularjs 时,我将所有内容都包装在一个新引用中,该引用自动使用 querySelectorAll 来定位 DOM,如下所示:

YOUR_APP.run(function() {
    jqLite = function(selector) {
        var selectorResult = (typeof selector == 'object') ? selector : document.querySelectorAll(selector)
        return angular.element(selectorResult)
    }; 
})

所以我可以“像 jQuery”一样使用它,使用:jqLite('body > div').addClass('whatever');

在极少数情况下,它的行为不像 jQuery,例如,通过使用 querySelectorAll,您不再像 jQuery 那样获得带有结果的对象数组,而是一个 nodeList,因此您不能将 forEach 方法应用于例如,但有一些简单的解决方法。并且每当新的参考 jqLit​​e 不能完成这项工作时,您总是可以直接使用 angular.element 。

但这应该满足大多数 jQuery 需求的 99% :)

希望这可以帮助。

于 2015-03-25T09:13:32.310 回答