从主体分离时jQuery对象scrollTop(value)?

时间:2015-03-19 14:56:52

标签: javascript jquery html css dom

我在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中。我需要它是无脑的。

非常感谢任何帮助

1 个答案:

答案 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);