scrolltop メソッドを使用しようとしていますが、event.preventDefault が正しく機能していません。私が経験しているのは、ページが最初に上にスクロールしてから下にスクロールすることです。onclick により、ページが再送信されるか、何かが発生するようです... (ajax post??)
次のコードがあります
ボタン(トリガー)
<a id="nextset" class='nextbtn' >Next Step</a>
イベント
jQuery('#nextset').click(function (event) {
event.preventDefault();
movenext('set');
jQuery('html,body').animate({ scrollTop: $('#subtitles').offset().top }, 2000);
});
機能
function getfav(obj) {
var myParams = "{ 'proattr':'" + obj + "'}";
jQuery.ajax({
type: "POST",
url: "project.aspx/getproject",
data: myParams,
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function () { jQuery('#wait').show(); },
complete: function () { jQuery('#wait').hide(); },
success: function (msg) {
GetProjectPic(msg.d, obj); //creates DOM and insert in div
Initbtns();// dynamic btns initialization
}
});
}
function movenext(obj) {
//other codes to hide/show DOM
getfav(nextobj);
}
リターンフォルスを追加すると; onclick イベントでは、ボタンが機能しません。
一番上にスクロールする原因は何ですか?
アップデート:
movenext 関数内のコード ブロックが原因でした。
jQuery('[id^="favdiv"]').empty();
event.preventDefault とは関係ありません。
奇妙なことに、画面が非表示の div の高さ (「favdiv」) よりもはるかにスクロールし、上下の画面効果が発生します。どうやって防げばいいのかわからない…
更新2
jqueryの空のメソッドを検索したところ、これが見つかりました。