我在jQuery中进行DOM操作,将body包装在一些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中,因为在追加到页面后滚动会导致简短的&#34; flash&#34;在Mac上的Safari中。我需要它是无脑的。
非常感谢任何帮助
答案 0 :(得分:0)
如果你真的将内容直接附加到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);