我的页面操作使用类似:
$('#thetable tbody').replaceWith(newtbody);
newtbody
通常与它所替换的垂直高度相同,我们应该能够让脚本代替它。
现在,因为我发现执行:
$('body').scrollTop(300);
来自JS调试器控制台的做了我希望的事情,我认为简单的补救措施是:
var scrollsave = $('body').scrollTop();
$('#thetable tbody').replaceWith(newtbody);
$('body').scrollTop(scrollsave);
但没有快乐。我还没有使用jQuery.ScrollTo。
答案 0 :(得分:40)
我们遇到了完全相同的问题,以下代码效果很好......
var scroll = $(window).scrollTop();
// yada
$("html").scrollTop(scroll);
答案 1 :(得分:26)
var position= $(window).scrollTop();
//some things here
$(window).scrollTop(position);
它在IE8和FF中都适用于我。
答案 2 :(得分:4)
请务必使用return false;
来终止您的function(){}
构造。
事件触发器可能正在尝试执行目标DOM元素的默认操作,即< a href="" >;
答案 3 :(得分:1)
你使用aspx吗? 如果是aspx:
$(document).ready(function () {
//------------ scroll-------------
$('body').scrollTop(document.getElementById('<%=hdScroll.ClientID%>').value);
$(window).scroll(function () {
$("#<%= hdScroll.ClientID %>").val($(window).scrollTop());
//alert(document.getElementById('<%=hdScroll.ClientID%>').value);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<asp:HiddenField Id="hdScroll" runat="server"></asp:HiddenField>
&#13;
答案 4 :(得分:0)
您可以定期检查div
outerHeight
,并在scrollTop
渲染超过滚动值后设置div
属性。
var g_Interval ;
var g_ScrollTop ;
function checkAndAdjustScroll() {
var height=$('#content').outerHeight() ;
if(height>g_ScrollTop) {
$(window).scrollTop(g_ScrollTop) ;
clearInterval(g_Interval) ;
}
}
每当您使用AJAX内容更新div时,请执行此操作
g_ScrollTop=$(window).scrollTop() ;
g_Interval=setInterval(checkAndAdjustScroll, 100) ;
您可能需要根据div
从页面顶部的偏移量进行调整
答案 5 :(得分:0)
尝试使用.html()
代替.replaceWith()
:
$('#thetable tbody').html( newtbody.html() );
。
我不知道这里可能存在的性能瓶颈,但是当我尝试保留div的滚动位置时,它对我来说是成功的诀窍,而且似乎也可以处理整个页面的滚动位置