用angular.element(element).offset替换$(element).offset

时间:2017-01-09 12:43:43

标签: javascript jquery angularjs

我不应该在我的应用程序中使用jQuery但是我得到了一个场景,我需要元素的偏移而不是使用$(element).offset()

我使用了angular.element(element).offset(),而且我使用的动画就像angular.element(element).animate(targetPosition)它正常工作所以我想知道angular.element()是否内置了所有jQuery函数?

任何解释都将不胜感激。

4 个答案:

答案 0 :(得分:1)

如果我必须表达我的想法,那么:

Angular确实有一些重要的jquery方法,但有一些限制,而angular团队将它命名为jqLit​​e。

Full doc for angular.element

这只是一个例子,当你在你的页面中没有jquery然后angular会使用jqLit​​e,如果你在angular之前加载jQuery,那么可以使用整个jQuery方法。在这种情况下,将使用jQuery方法而不是jqLit​​e。

来自文档:

  

Angular的jqLit​​e

     

jqLit​​e仅提供以下jQuery方法:

     

addClass() - 不支持函数作为第一个参数
  ()之后
  追加()
  attr() - 不支持函数作为参数
  bind()(不建议使用,使用on()) - 不支持名称空间,选择器或eventData
  children() - 不支持选择器
  克隆()
  内容()
  css() - 只检索内联样式,不调用getComputedStyle()。作为setter,不会将数字转换为字符串或附加' px',也没有自动属性前缀。
  数据()
  分离()
  空()
  EQ()
  find() - 仅限于按标签名称查找   hasClass()
  HTML()
  next() - 不支持选择器
  on() - 不支持名称空间,选择器或eventData
  off() - 不支持名称空间,选择器或事件对象作为参数
  one() - 不支持命名空间或选择器
  parent() - 不支持选择器
  前置()
  道具()
  ready()(不建议使用,使用angular.element(回调)而不是angular.element(document).ready(callback))
  除去()
  removeAttr() - 不支持多个属性
  removeClass() - 不支持函数作为第一个参数
  removeData()
  replaceWith()
  文本()
  toggleClass() - 不支持函数作为第一个参数
  triggerHandler() - 将虚拟事件对象传递给处理程序
  unbind()(不建议使用,使用off()) - 不支持名称空间或事件对象作为参数
  VAL()
  wrap()

答案 1 :(得分:0)

AngularJs在内部使用jQLite,它具有选择器,操作属性等所有常用功能。

如果你想仔细看看refer the angular documentation

答案 2 :(得分:0)

angular.element只是jQuery的别名,如果加载的话。如果没有加载jQuery,angular.element使用包含jQuery函数子集的jqlite。

答案 3 :(得分:0)

如果你在angularjs之前为jQuery提供了cdn,它将自动使用JQuery,否则将使用JQLite,这只是JQuery的一个子集。希望这清除了对场景的理解。