jQuery的animate()scrollTop属性在iPad Safari上不起作用

我有一个div,如果它变长,将显示一个滚动条。 这是css

top: 35px; overflow: hidden; position: absolute; width: 100%; height: 100%; bottom: 0px; overflow-x: hidden; display: block; 

不知何故,当我使用jQuery(v1.7.1)滚动这个div时,它不能在iPad(iOS 8.3)Safari上运行,但它在所有桌面浏览器上都能正常运行。 这是代码

 $('#myDivId').animate({ scrollTop: 100 }); 

这个简单的JS代码在iPad Safari上不起作用,但在桌面浏览器上运行良好

 var myDiv = document.getElementById('myDivId'); myDiv.scrollTop = 100; 

有人为什么有任何想法?

我有一段时间遇到同样的问题。 我不记得究竟为什么,但似乎jQuery animate在这种情况下不适用于那些设备。 这对我有用:

 var scrollOffset = $('#myDivId').offset().top; if (navigator.userAgent.match(/iPad|iPhone|iPod|Android|Windows Phone/i)) { function customScrollTo(to, duration) { var start = 0, change = to - start, currentTime = 0, increment = 20; var animateScroll = function(){ currentTime += increment; var val = Math.easeInOutQuad(currentTime, start, change, duration); window.scrollTo(0,val); if(currentTime < duration) { setTimeout(animateScroll, increment); } }; animateScroll(); } Math.easeInOutQuad = function (t, b, c, d) { t /= d/2; if (t < 1) return c/2*t*t + b; t--; return -c/2 * (t*(t-2) - 1) + b; }; customScrollTo(scrollOffset, 1000); }else{ $('#myDivId').animate({ scrollTop: scrollOffset }, 1000, function(){ $('#myDivId').clearQueue(); }); } 

它对普通浏览器使用jQuery动画,但为移动设备使用自定义滚动脚本。 向原作者道歉,我不记得剧本的来源。 希望这可以帮助。