2012-04-23 67 views
0

我想使用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

回答

0

我最終寫了這樣的東西。仍然有點上漲,但至少頁面不跳

jQuery('#favdiv' + obj).fadeOut('fast', function() { 
    jQuery('#favdiv' + obj).remove(); 
}); 
setTimeout(function() { 
    jQuery('html,body').animate({ scrollTop: $('#subtitles').offset().top }, 1500); 
}, 500); 
1

你能避免使用下面的代碼片段的默認行爲:

<a id="nextset" class="nextbtn" href="javascript:void(0);">Next Step</a> 
+0

我試過了,但它仍然做同樣的事情。我想知道我只需要一個代碼來等待函數'movenext'完成... – shinya 2012-04-24 00:03:38

0

你有沒有任何機會可以嘗試在「返回false」在點擊事件的結束?

jQuery('#nextset').click(function (event) { 
      movenext('set'); 
      jQuery('html,body').animate({ scrollTop: $('#subtitles').offset().top }, 2000); 
      event.preventDefault(); 
      return false; 
     }); 
+0

是的,它不起作用。 – shinya 2012-04-24 00:58:19