2011-07-18 33 views
0

我有一个div容器设置为overflow:auto其中包含许多<li>'s。我编写了一个简单的函数,当用户单击按钮或按下向上或向下箭头时更改突出显示的列表项。如何使溢出:自动容器遵循列表项迭代

唯一的问题是,当用户单击迭代按钮时,突出显示的列表项迭代后面没有容器滚动条。我正在寻找一种方式来迫使容器滚动与迭代

这里滚动是什么,我试图做一个例子: http://jsfiddle.net/sadmicrowave/rwfUr/

记住 - 向上和向下箭头使容器滚动(只要容器有焦点),但迭代按钮没有。

重要 - 我正在寻找替代.scrollTo()

+0

['.scrollTop()'](http://api.jquery.com/scrollTop/)? – vinceh

+1

[.scrollIntoView()](http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=scrollintoview)呢? – Andy

+0

++安迪 - 我见过的最佳解决方案。这就等于http://jsfiddle.net/sadmicrowave/rwfUr/16/谢谢! – sadmicrowave

回答

0

以编程方式做到这一点,你就需要获得一个项目的高度和框的高度。

当滚动:(框的高度 - (突出显示的项目数*物品高度)< 0) 使用scrollTop的属性来滚动通过的物品高度的列表中,而上面的是小于0

我希望这有助于。

::编辑:: 这只适用于盒高正好与指定数量的列表项大小相同的情况。假设每个项目高度都是20px,并且您希望列表框显示10个项目,那么您需要将列表框高度设置为200px。

+0

考虑到这一点,你可以看看这个,告诉我为什么.offset()。top不断跳来跳去? http://jsfiddle.net/sadmicrowave/rwfUr/14/ – sadmicrowave

+0

Aelux - 好吧,虽然我的容器将永远是一个指定的高度,我会有一个未知量的内部列表项。 – sadmicrowave

+0

只要列表框是固定大小,与您一次能够查看的列表项目成比例,它与列表中的多少项无关。就您的第一条评论而言,您的偏移顶端需要使用上面解释的公式来工作。您需要将项目的高度添加到offsetTop,而不是将其设置为相等。 请记住,只有当上述算法低于零时才需要滚动。 – Aedaeum