2013-11-28 178 views
1

我點擊時用了jQuery向下滾動到頁面上的其他(動態加載)元素(在單擊某個項目,在頁面上的一些附加元素一些Ajax加載網頁然後它會滾動到這些新添加的元素中的第一個項目)。IOS Safari瀏覽器滾動到頂部打破jQuery的scrollTop的

所有的工作都很好,除了在IOS Safari上,如果我使用點擊狀態欄滾動到頁面頂部(正常的ios行爲),然後點擊我的任何鏈接,同時Ajax在新的元素,jQuery的scrolltop不再工作,我仍然堅持在頁面的頂部(除非我然後手動滾動)。但是,如果我只滾動1px,然後點擊任何鏈接,jQuery的scrolltop再次工作。就好像,無論何時使用IOS狀態欄滾動到頂部功能,都會將其鎖定在頂部,直到您手動滾動(即使只有1px),然後javascript滾動再次運行!

我測試過它在我的iPhone上的Chrome瀏覽器,它一切正常,它似乎是在Safari下。

這裏曾經是我的一個鏈接被點擊(並通過AJAX加載新的內容到頁面),其滾動到新添加的元素的jQuery的例子:

$('ul.c1 a').click(function() { 
     $('html, body').delay(250).animate({ 
      scrollTop: $('.c2').offset().top 
     }, 200); 
    }); 
+1

我有同樣的問題。是的,這是一個野生動物園的事情。 – Bitneko

回答

0

我解決此問題得到了通過調用window.scroll(0,1)在調用scrollTop上的jquery.animate之前'重置'滾動。它適用於我,因爲我的導航由選擇下拉菜單觸發,並始終位於頁面頂部。

$select.on('click', function(){ 
    window.scroll(0, 1); 
}); 

$select.on('change', function(){ 
    var $this = $(this), 
     idx  = $this.prop("selectedIndex") - 1, 
     dist = $timeline.find('.chapter').eq(idx).position().top; 

    $this.prop("selectedIndex", 0); 

    $('html, body').stop(true).animate({scrollTop: dist}, 250); 
}); 
相關問題