jQuery Offset返回负值

我有这样的场景如下

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

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

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

这是小提琴

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

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

试试吧

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

迟到的答案,万一它会帮助某人:

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

 $( something )[0].offsetTop;