我有一个可滚动的div,叫做'divEventScroll‘。当使用javascript/jquery将数据附加到此div中时,预期滚动条将停留在相同的位置,即scrollTop()保持不变。
这与在iOS版本5及更低版本的iOS设备中的功能完全相同。但是,在iOS6+中,一旦检测到滚动,div就会滚动到div的开头。
我已经在iOS6.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。
EDIT2:我意识到我说得不太清楚。(一点也不!我忘了添加这个):当我开始向下滚动div以查看附加在底部的内容时,div不是正常地向下滚动,而是向上弹到顶部,然后从那里继续向下滚动。这很奇怪:S
发布于 2013-06-04 20:28:26
使用$(window).scroll代替$('body').scroll
http://flesler.com/jquery/scrollTo/
可能会有帮助
示例代码。虽然与您的需求无关,但希望它能有所帮助:
$(文档)函数(.ready () {
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');
}
});
});
https://stackoverflow.com/questions/16917742
复制相似问题