offset()。left,offsetLeft,offset.left,有什么区别?为什么不使用纯js offsetLeft而不是jQuery方式?

时间:2011-08-04 12:10:57

标签: javascript jquery offset

通常在使用jQuery获取偏移时,我会offset().left。我的理解是offsetLeft是纯粹的javascript,为什么不在jQuery offset().left上使用它?它真的有助于跨浏览器吗?要么?

使用offset().left时,我看到人们取出()所以它只是offset.left,这可以吗?如果括号中没有任何内容,那么它可以吗?

作为旁注:我听说在IE7中使用offset().top的jQuery方式时,它会根据您滚动的数量给出一个screwey偏移量。 jQuery API page for offset()评论中有人说document.getElementById(anchor).offsetTop修正了它。

1 个答案:

答案 0 :(得分:4)

在某些浏览器中获取偏移量可能有点棘手。 IE 6及以下版本中offsetTop-Left不正确,而offsetXoffsetY等其他浏览器完全不一致(请参阅Quirksmode

通常,当库包含某些功能时,即使相同的功能似乎已经存在,通常也会出于跨浏览器的目的。

据我所知,使用offset.left代替offset().left甚至不行。后者将“获取 left函数返回的对象offset()属性,这就是您想要的。前者没有括号,将“获取函数的left属性 offset”,这对我来说没有多大意义(除非对象的{您正在访问的{1}}属性不是jQuery包装器,在这种情况下,offset属性可能不是函数,而是具有offsetleft属性的对象

但我不是jQuery专家