5

我目前有一个动态填充的可滚动 div。
我有一个函数可以捕获 UpArrow 和 DownArrow keyPresses 并更改父 div 中的类以一次选择一个孩子(基本上这模仿了选择输入)

这就是我想要做的:我需要更改 div 的可视区域(向下或向上)以显示最近“选择”的子项,但前提是该子项尚未在父项的可视区域中。

所以我需要以某种方式获取与父div的scrollHeight相关的可视区域......但我不知道该怎么做......

另外,我不确定如何设置父 div 的可视区域。

任何帮助将不胜感激!

4

3 回答 3

2

呵呵,想通了

首先,我通过以下方式获得可视区域

var viewableTop = $("#parentDiv").scrollTop;
var viewableBottom = $("#parentDiv").innerHeight() + $("#parentDiv").scrollTop;

所以 viewableTop 和 viewableBottom 之间的任何东西都是可见的。但实际上你不需要知道这一点。相反,您需要了解以下内容

//getting child position within the parent
var childPos = $("#childDiv").position().top;
//getting difference between the childs top and parents viewable area
var yDiff = ($("#childDiv").position().top + $("#childDiv").outerHeight()) - $("#parentDiv").innerHeight()

然后

//if upArrow and childPosition is above viewable area (that's why it goes negative)
if(event.keyCode == 38 && childPos < 0)
    $("#parentDiv").scrollTop += childPos;//add the negative number to the scrollTop
//if downArrow and the difference between childs top and parents viewable area is greater than the height of a childDiv
else if(event.keyCode == 40 && yDiff > $("#childDiv").outerHeight()-1)
    $("#parentDiv").scrollTop += yDiff;//add the difference to the parents scrollTop
于 2010-01-12T21:57:44.130 回答
0

如果您使用的是 jQuery,则可以使用position(). 可滚动的 div 可以设置为相对/绝对定位以使其定位。

此外,您可以更改scrollTop属性以更改滚动位置。或 jquery scrollTop(pos)

于 2010-01-12T21:01:19.187 回答
0

您需要获取内部 div 的 scrollTop,将外部 div 的高度添加到其中,这将为您提供可视尺寸

于 2010-01-12T21:05:16.713 回答