【问题标题】:Proper way to traverse the angular.element遍历 angular.element 的正确方法
【发布时间】:2014-03-11 05:48:11
【问题描述】:

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

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

如果我想获取元素,例如进行.click() 事件,我需要使用'document' 对象,因为我还没有找到直接访问@987654324 的方法一次@元素。

对正确的方法有什么想法吗? 不幸的是,jqLit​​e 只为我们提供了一个 find() 函数,您无法通过 id 而不是 class 进行搜索

【问题讨论】:

  • 你试过 angular.element(elem.querySelector('.classname'))
  • 那比我用的更好哈哈谢谢!

标签: javascript angularjs dom traversal jqlite


【解决方案1】:

就我个人而言,当我使用 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 &gt; div').addClass('whatever');

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

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多