2016-09-05 18 views
-1

私は悩まされています。 私はデータベースにajax呼び出しで変更を加え、divを更新して問題なく動作しますが、ページの上部までスクロールします。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); 





} 

しかし、関係なく、私は何をすべきか、ページが常に先頭にジャンプしません:

これは、IVEが試したものです。私は間違って何をしていますか?

EDIT:これでスクロールすることができますが、アニメーション化されていてもスクロールする前に一番上にジャンプします。私はそれを得ることができる方法はありますか?

答えて

4

あなたは

$(window).scrollTop(scrollsave); 

を使用しているまず、scrollTop()は引数を取りません。

第2に、ウィンドウ要素でscrollTop()を呼び出すと、ウィンドウの上部にスクロールしています。

#profilePostsscrollTop()を呼び出すと正常に動作します。

+0

を私が試した: scrollsave = $( '#のposted_by - ' + pid)を.scrollTop(); その後、リフレッシュ後 $( '#posted_by - ' + pid).scrollTop(scrollsave); とサイコロはありません。 また、リフレッシュ後に試しました $( '#posted_by - ' + pid).scrollTop(); とまだダイスはありません。 私は、リフレッシュされている外側divの内側divにスクロールしようとしています – emjay

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; 



} 
関連する問題