页面加载后我使用
agenda_top = $('#agenda').offset().top;
travel_top = $('#travel').offset().top;
hotel_top =$('#hotel').offset().top;
存储页面内主要部分的位置。然后我用它们进行导航。例如。 $('#anchor').animate({ scrollTop: hotel_top }, 'ease');
和#anchor
是<body>
。
问题是在页面上有一个可扩展的表格,每行扩展我最初存储的位置变得不准确。我希望有一个函数,当我打开一行时我可以调用它,这将重新计算偏移量。我尝试调用我在页面加载时使用的相同功能,但因为当我调用它时,我不在页面的顶部,检索到的偏移是错误的。
我不知何故需要从文档透视图的顶部获取元素#travel
和#hotel
的偏移量。这可能吗?
这里有一些数字。当页面加载偏移()。#hotel
的顶部是2637
后,我打开行,#hotel
元素从顶部进一步移动后我再次偏移()。顶部但是这个时间它返回2059
但它应该是MORE不小于原始数字,因为div现在已经扩展。这是我在浏览器窗口中滚动的时间。但是如果我手动滚动到窗口的顶部,那么hotel_top =$('#hotel').offset().top;
我得到3137
这是正确的nuber,但我不知道在页面内滚动时得到这个数字很热.. < / p>
答案 0 :(得分:1)
通过考虑滚动条位置来解决这个问题,所以当我展开div时,我重新计算这样的位置position = element.offset().top + $(window).scrollTop();
我实际上没有使用window
,因为它为scrollTop()返回0但是我有一个div在<body>
之后立即包装所有内容,我使用它。工作完美无缺。