Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何设置动态定位的div的正确位置()_Javascript_Jquery_Html - Fatal编程技术网

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

Javascript 如何设置动态定位的div的正确位置(),javascript,jquery,html,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) {

我正在进行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时,div在瞬间的位置,但尚未在浏览器中正确放置

用于获取
div
的滚动位置。
但这将为您提供
div
相对于其父元素的位置。
虽然在其他情况下非常方便,但在您的情况下,它不会给出所需的值

在本例中,您需要
div
相对于
窗口的位置,因为您正在滚动的是
窗口。
对于您需要使用的内容,这将为您提供元素相对于文档的位置,无论元素在页面上的结构如何:

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

您可能会考虑张贴您正在使用的代码来获取元素位置。给出元素相对于其父元素的滚动位置。要获取相对于窗口/文档的滚动位置,请使用:@myfunkyside。非常感谢。我想现在应该有人正式回答了。我把它作为一个答案贴了出来,再加上一点解释(我讨厌没有答案的问题)。