只是一个让我讨厌的问题。 我通过ajax调用对数据库进行了更改,刷新了div,所有这些都没问题,但仍然滚动到页面顶部。
这是我尝试过的:
function postdislike(pid, user, uid) {
"use strict";
//user clicks dislike
var hr = new XMLHttpRequest();
var url = "sections/sendpostdislike.php";
var vars = "pid=" + pid + "&user=" + user + "&uid=" + uid;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState === 4 && hr.status === 200)
{
var response = hr.responseText;
//scrollsave = $('#posted_by-'+pid);
//scrollsave = $(document).scrollTop();
$('#profilePosts').load('../'+ target +' #profilePosts > *');
//$('#posted_by-'+pid).load('../'+ target +' #posted_by-'+pid + ' > *');
//$('#posted_by-'+pid).scrollTop();
$('html, body').animate({
scrollTop: ($('#posted_by-'+pid).offset().top-300)},0);
//$('#reactsub-' + pid).load('../'+ target +'#reactsub-' + pid + ' > *');
}
};
hr.send(vars);
}
但无论我做什么,页面总是跳到顶部。我做错了什么?
编辑:设法让它滚动这个,但作为动画,它仍然跳转到顶部滚动之前。有没有办法可以让它留在那里而不会跳到顶部开始?
答案 0 :(得分:4)
您正在使用
$(window).scrollTop(scrollsave);
首先,scrollTop()
不接受任何争论。
其次,如果您在窗口元素上调用scrollTop()
,则会滚动到窗口顶部。
在scrollTop()
上调用#profilePosts
,然后就可以了。
答案 1 :(得分:0)
这有效......
function postdislike(pid, user, uid) {
"use strict";
event.preventDefault();
//user clicks dislike
var hr = new XMLHttpRequest();
var url = "sections/sendpostdislike.php";
var vars = "pid=" + pid + "&user=" + user + "&uid=" + uid;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState === 4 && hr.status === 200)
{
var response = hr.responseText;
//scrollsave = $('#posted_by-'+pid);
//scrollsave = $(document).scrollTop();
$('#profilePosts').load('../'+ target +' #profilePosts > *');
//$('#posted_by-'+pid).load('../'+ target +' #posted_by-'+pid + ' > *');
//$('#posted_by-'+pid).scrollTop();
//$('html, body').animate({
//scrollTop: ($('#posted_by-'+pid).offset().top-300)},0);
//$('#reactsub-' + pid).load('../'+ target +'#reactsub-' + pid + ' > *');
$(window).on('beforeunload', function() {
$(window).scrollTop(0);
});
}
};
hr.send(vars);
return false;
}