2011-05-12 60 views

回答

62

您可以監視當前窗口滾動位置並相應地執行操作。如果您希望偏移量在某個點之後(下面的代碼將執行任何滾動,甚至1px),那麼只需在if語句中檢查$(this).scrollTop() > n,其中n是所需的偏移量。

http://jsfiddle.net/robert/fjXSq/

$(window).scroll(function() { 
    if ($(this).scrollTop()) { 
     $('#toTop:hidden').stop(true, true).fadeIn(); 
    } else { 
     $('#toTop').stop(true, true).fadeOut(); 
    } 
}); 
+0

真棒解決方案!像任何東西一樣容易... – 2012-11-15 00:42:03

+0

謝謝。這個解決方案很容易使用和理解! – 2014-03-17 07:30:37

+0

爲了確保你不會遇到與'''.scrollTop()'''> n相關的淡出問題,請添加'''if($('#toTop')。css('display')== none )在'''.fadeOut()'''之前'' – thewisenerd 2015-05-04 18:32:20

1

老問題,但我想,既然我實現了一個爲自己給我的兩分錢。我相信最好使用setTimeout來防止多個觸發事件的安全。像這樣:

function showButton() { 


    var button = $('#my-button'), //button that scrolls user to top 
     view = $(window), 
     timeoutKey = -1; 

    $(document).on('scroll', function() { 
     if(timeoutKey) { 
      window.clearTimeout(timeoutKey); 
     } 
     timeoutKey = window.setTimeout(function(){ 

      if (view.scrollTop() < 100) { 
       button.fadeIn(); 
      } 
      else { 
       button.fadeOut(); 
      } 
     }, 100); 
    }); 
} 

$('#my-button').on('click', function(){ 
    $('html, body').stop().animate({ 
     scrollTop: 0 
    }, 500, 'linear'); 
    return false; 
}); 

//call function on document ready 
$(function(){ 
    showButton(); 
}); 
相關問題