我想使用scrolltop方法和event.preventDefault無法正常工作。 我所經歷的是頁面首先滾動然後向下滾動。 似乎的onclick導致頁面重新提交或東西...(阿賈克斯後?)event.preventDefault無法正常工作。 Ajax調用導致這個?
我有下面的代碼
按鈕(觸發)
<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事件中,按鈕不起作用。
任何想法是什麼導致滾動到頂部?
UPDATE:
它是由MoveNext的函數內碼塊引起的。
jQuery('[id^="favdiv"]').empty();
與event.preventDefault無關。
奇怪的是,屏幕滾動遠遠超過隱藏的div高度(「favdiv」),導致上下屏幕效果。我不知道如何阻止它...
UPDATE2
我搜索jQuery的空方法,發現了這個。
jquery "empty" changes the scrollbar
我試過了,但它仍然做同樣的事情。我想知道我只需要一個代碼來等待函數'movenext'完成... – shinya 2012-04-24 00:03:38