我不应该在我的应用程序中使用jQuery但是我得到了一个场景,我需要元素的偏移而不是使用$(element).offset()
我使用了angular.element(element).offset()
,而且我使用的动画就像angular.element(element).animate(targetPosition)
它正常工作所以我想知道angular.element()
是否内置了所有jQuery函数?
任何解释都将不胜感激。
答案 0 :(得分:1)
如果我必须表达我的想法,那么:
Angular确实有一些重要的jquery方法,但有一些限制,而angular团队将它命名为jqLite。
这只是一个例子,当你在你的页面中没有jquery然后angular会使用jqLite,如果你在angular之前加载jQuery,那么可以使用整个jQuery方法。在这种情况下,将使用jQuery方法而不是jqLite。
Angular的jqLite
jqLite仅提供以下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的一个子集。希望这清除了对场景的理解。