我正在尝试使用 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 空方法并找到了这个。