Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将$(元素).offset替换为angular.element(元素).offset_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 将$(元素).offset替换为angular.element(元素).offset

Javascript 将$(元素).offset替换为angular.element(元素).offset,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我不应该在我的应用程序中使用jQuery,但是我得到了一个场景,我需要元素的偏移量,而不是使用$(element.offset() 我使用了angular.element(element).offset(),也使用了angular.element(element).animate(targetPosition)它工作正常,所以我想知道angular.element()是否内置了所有jQuery函数 任何解释都将不胜感激。AngularJs在内部使用jQLite,它拥有选择器、操作属性等所有常用功

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

我使用了
angular.element(element).offset()
,也使用了
angular.element(element).animate(targetPosition)
它工作正常,所以我想知道
angular.element()
是否内置了所有jQuery函数


任何解释都将不胜感激。

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


如果您想更仔细地观察,那么元素

angular.element
只是jQuery的别名(如果加载了它)。如果未加载jQuery,
angular.element
使用包含jQuery函数子集的jqlite。

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

Angular确实有一些重要的jquery方法,但有一些限制,Angular团队将其命名为jqLite

这只是一种情况,当页面中没有jquery时,angular将使用jqLite,如果在angular之前加载jquery,则可以使用整个jquery方法。在这种情况下,将使用jQuery方法而不是jqLite


从文档中: Angular's jqLite jqLite仅提供以下jQuery方法: addClass()-不支持将函数作为第一个参数
在()之后
append()
attr()-不支持函数作为参数
bind()(已弃用,在()上使用)-不支持名称空间、选择器或事件数据
children()-不支持选择器
克隆()
内容()
css()-仅检索内联样式,不调用getComputedStyle()。作为setter,不将数字转换为字符串或附加“px”,也不具有自动属性前缀。
数据()
分离()
空()
eq()
find()-仅限于按标记名查找
hasClass()
html()
next()-不支持选择器
on()-不支持名称空间、选择器或事件数据
off()-不支持名称空间、选择器或事件对象作为参数
one()-不支持名称空间或选择器
父项()-不支持选择器
prepend()
prop()
ready()(不推荐使用,使用angular.element(回调)代替angular.element(document.ready(回调))
删除()
removeAttr()-不支持多个属性
removeClass()-不支持将函数作为第一个参数
removeData()
替换为()
text()
toggleClass()-不支持将函数作为第一个参数
triggerHandler()-将虚拟事件对象传递给处理程序
unbind()(已弃用,请使用off())-不支持名称空间或事件对象作为参数
val()
包裹()


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

如果您已加载jQuery库,则为是,否则为否,请参阅我已提供了CDN,但如果jqlite没有名为offset或animate的函数该怎么办如果jqlite函数没有诸如animate()和offset()之类的函数该怎么办?如果jQuery可用,element是jQuery函数的别名。如果jQuery不可用,angular.element将委托给angular的内置jQuery子集,称为“jQuery lite”或jqLite。如果jqLite没有该函数,则只需在angular脚本之前包含jQuery即可。