我有一个名为'divEventScroll'的可滚动div。当使用javascript / jquery将数据附加到此div中时,预计滚动条将保持在同一位置,即scrollTop()保持不变。
在iOS 5及更低版本的iOS设备中,此功能完美无缺。但是,在iOS6 +中,只要检测到滚动,div就会向右滚动到div的开头。
我在使用ios 6.0.1的iPad3中解决了这个问题(不是很好的方式)。
但是,它似乎在macbook中不起作用,因为它只在触发滚动惯量事件后检测到滚动。
这是我用于iPad的代码:(可行)
$('body').on('touchmove',function(e){
if(navigator.userAgent.match(/(iPad|Version\/6.0)/gi)){
if($('#divEventScroll').has($(e.target)).length && fromNextEvents){
if($('#divEventScroll').scrollTop()<scrollPos){
fromNextEvents=false;
$('#divEventScroll').scrollTop(scrollPos);
}
}
}
});
我用于Macbook Pro的代码:(当我期望它时不会被触发)
$('body').scroll(function(){
if(navigator.userAgent.match(/(Macintosh&Version\/6.0)/gi)){
if(fromNextEvents){
if($('#divEventScroll').scrollTop()<scrollPos){
fromNextEvents=false;
$('#divEventScroll').scrollTop(scrollPos);
}
}
}
});
真的很感激这方面的帮助。
编辑:fromNextEvents将在我希望此代码工作的场景中设置为true。
编辑2:我意识到我不太清楚。 (在所有!我忘了添加这个): 当我开始向下滚动div以查看底部附加的内容,而不是正常向下滚动时,div会向右上方拍摄,然后继续从那里向下滚动。这很奇怪:S答案 0 :(得分:0)
使用$(window).scroll而不是$('body')。scroll
http://flesler.com/jquery/scrollTo/
可能会有所帮助
示例代码。虽然与您的要求无关,但希望它有所帮助:
$(document).ready(function(){
var sidebar = $('#sidebar_content');
var top = sidebar.offset().top - parseFloat(sidebar.css('marginTop'));
$(window).scroll(function (event) {
var ypos = $(this).scrollTop();
if (ypos >= top) {
sidebar.addClass('fixed');
}
else {
sidebar.removeClass('fixed');
}
});
});