我有一个div,并且在插入动态数据后-其滚动条始终转到顶部位置(值0)。
$(document).on('click', '.title', function(){
var scroll = $('#div').scrollTop();
console.log(scroll); // for example - 120
$.post('common.php', {vars}, function(data) {
$('#div').html(data), function(){$('#div').scrollTop(scroll)};
var scroll = $('#div').scrollTop();
console.log(scroll); // result 0 - expected 120
});
});
如何将滚动条保持在先前位置?
答案 0 :(得分:0)
您可能要使用cookie。
使用本机JS(来源W3Schools)非常容易:
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
现在您可以使用一个功能来保持位置cookie处于最新状态(例如每2秒一次)
setInterval(function() { setCookie('Ypos', scroll, 2); }, 2000);
我还没有测试过任何一个,但是这似乎是实现自己想要的一个好方法
(顺便说一句,这个想法来自我的GoogleApp“ Great Suspender”,它在cookie中留下了一些“ gsScrollPos”)