【问题标题】:jQuery Offset returns negative valuejQuery Offset 返回负值
【发布时间】:2014-12-24 06:08:40
【问题描述】:

下面是这样的场景

在我的用户界面中,我将有一个文本框。如果我在文本框中输入了一个数字,我需要向下滚动到相应的页码。

Dom 中,我将有一些具有各自id 的div。如果用户输入的页码为 5。我将检查 dom 中的第 5 个 div 偏移量并获得最高值。通过使用 scrollTop 会滚动到第 5 个 div。

这里,问题是在向下滚动到第 5 个 div 之后。如果再次,输入页码为 2。偏移顶部值为负数。因此,ScrollTop 默认移动到顶部。

Here is fiddle

要准确重现这一点,请转到第 7 页,然后再转到第 3 或第 4 页。

【问题讨论】:

  • 为什么不是负数?当在容器上设置溢出滚动并且您位于底部时,顶部元素是非常负面的。在内容回升之前,您将获得该价值
  • 使用position() 也有帮助,因为容器上方有大约 80px 的控件
  • 您正在打印相对于您按 Enter 时所在的当前位置的偏移值。因此,如果页面 X 不在可见区域中(滚动过去),它将打印一个负数。
  • @Babu 检查我的答案

标签: jquery offset


【解决方案1】:

迟到的答案,以防对某人有所帮助:

只需使用 dom offsetTop 属性。尽管之前发生了任何滚动,这将是一个正确的位置。

$( something )[0].offsetTop; 

【讨论】:

【解决方案2】:

http://jsfiddle.net/Ldfmvwr9/3/

试试看

topValue=$('#container').scrollTop() + $("#"+parseInt(userPageNum)).offset().top - $("#"+parseInt(userPageNum)).height() / 2;

【讨论】:

  • 非常感谢......你节省了我的时间:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
相关资源
最近更新 更多