每次用户按j键时,我都想滚动到一个 div 。这是它的代码。
$(function() {
function scroll(direction) {
var scroll, i,
positions = [],
here = $(window).scrollTop(),
collection = $('.message_box');
collection.each(function() {
positions.push(parseInt($(this).offset()['top'],0));
});
for(i = 0; i < positions.length; i++) {
if (direction == 'next' && positions[i] > here) { scroll = collection.get(i); break; }
if (direction == 'prev' && i > 0 && positions[i] >= here) { scroll = collection.get(i); break; }
}
if (scroll) {
$('html, body').animate({"scrollTop": $(scroll).offset().top-50});
$(scroll).css('color', 'blue');
$(scroll).mouseleave(function() {
$(this).css('color', 'black');
});
}
return false;
}
$("#next,#prev").click(function() {
return scroll($(this).attr('id'));
});
$('body').keyup(function(event) {
if (event.which == 74) {
return scroll('next');
}
});
$('body').keyup(function(event) {
if (event.which == 75) {
return scroll('prev');
}
});
});
我需要从 div 的 offest 中减去 50 才能滚动到它。
$('html, body').animate({"scrollTop": $(scroll).offset().top-50});
它会在第一次滚动,但不会在其余时间滚动。我总是得到整数218,这是要滚动到的第一个 div 的偏移量。演示 - http://jsfiddle.net/XP5sP/6/ 有人可以帮助我吗?