从主体分离时,jQuery对象scrollTop(值)

jQuery object scrollTop(value) when detached from body?

本文关键字:scrollTop 对象 jQuery 主体 分离      更新时间:2023-09-26

我正在jQuery中进行DOM操作,将主体包裹在一些div元素中,所以我试图在转换后将滚动位置从窗口匹配到div元素,但不知何故,它不起作用。

我在做什么:

scrollPosition = $(window).scrollTop();
myBody = $("body").detach();
myBody.wrapInner("<div class='someclass'><div class='osm-website'></div></div>");
myWebsite =  myBody.find('.osm-website');
myWebsite.scrollTop(scrollPosition);

并且myWebsite scrollTop位置仍然是0

但如果我这样做:

myBody.appendTo('html');
$('.osm-website').scrollTop(scrollPosition);

它是有效的。

我必须找到一种方法,在将其附加到dom之前滚动它,因为在Mac上的Safari中,这种附加到页面之后的滚动会导致短暂的"闪光"。我需要它看起来毫无表情。

非常感谢您的任何帮助

如果你真的要将内容直接附加到html中,你可以简单地使用:

// Source: How to get height of entire document with JavaScript?
// http://stackoverflow.com/a/1147768/887539
var body = document.body;
var html = document.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );
$(window).scrollTop(height);

如果没有,你可以带上你即将成为父母的孩子,找到最后一个元素的位置,并添加元素的高度:

var $parent = $('....');
var $lastChild = $parent.children().last();
var offset = $lastChild.offset();
var scrollPos = offset.top + lastChild.outerHeight(true);
$(window).scrollTop(scrollPos);