5

現在、動的に入力されるスクロール可能なdivがあります。
UpArrowおよびDownArrowのkeyPressをキャプチャし、親div内のクラスを変更して、一度に1つの子を選択する関数があります(基本的に、これは選択された入力を模倣します)

これが私がやりたいことです:最後に「選択された」子を表示するために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 に答える