Ответ ShadowScripter близок и был отличной отправной точкой, но вы заметите, что если вы прокрутите до самой нижней позиции, запрос
$ ( "#" + идентификатор) .position (). Верх
возвращает отрицательное число для элементов, которые расположены над самым нижним элементом. Это связано с тем, что position (). Top возвращает значение относительно вершины родителя, а в переполненном div эта относительная верхняя позиция может быть меньше вершины вершины родителя.
Одним из решений будет дополнительная математика, учитывающая размер области просмотра.
Для моих целей было проще просто записать все вершины, когда страница закончит загрузку, а затем извлечь позицию из структуры данных:
var anchors = ['target01', 'target02', 'target03'];
var positions = {};
window.onload = function() {
for (var i = 0; i < anchors.length; i++) {
var id = anchors[i];
positions[id] = $("#" + id).position().top;
}
};
function scrollInOverflowDiv(parentID, id) {
var pos = positions[id];
$("#" + parentID).animate({scrollTop: pos}, 'slow');
}