如何设置动态定位的div的正确位置()

时间:2017-07-22 21:18:41

标签: javascript jquery html

我正在进行api通话并在div中显示信息。当我运行$(window).scrollTop($('#div').position().top)时,它会返回top: 267px的位置。在浏览器中查看相同的div时,其位置实际为top: 2058px

因此,当我运行代码时

window.addEventListener('message',function(event) {
 if(window.location.href.indexOf('?queryParam=') > -1) {   
    $('.button').click(function(){
      $(window).scrollTop($('#div').position().top);
    });
  }
  return;
 },false);

它滚动到top: 267px而不是top: 2058px,其中div实际上在浏览器中可见。

我的理论是因为div不是静态的,而是通过api调用动态提取,在事件监听器中,它只考虑div在分秒时的位置。它已被检索并且尚未正确放置在浏览器中。

1 个答案:

答案 0 :(得分:1)

您正在使用position().top获取div的滚动位置 但这会给你div相对于其父元素的位置 虽然在其他情况下非常方便,但在你的情况下,它并没有给出所需的价值。

在您的情况下,您需要div相对于window的位置,因为它是您正在滚动的window
为此,您需要使用offset().top,这将为您提供相对于文档的元素位置,无论元素在页面上的结构如何:

$(window).scrollTop($('#div').offset().top);