2010-08-13 177 views
2

我有一个元素列表,我希望能够在用户选择项目时将其引入焦点。我试着用这些对象调用.focus()与Jquery无济于事。有什么我失踪? :)滚动到列表中的项目

编辑: 我有一个列表(ul)的元素。我点击一个起始项目,然后按方向键继续选择。上和下。我真的很喜欢换档选择功能,就好像它在Finder或Windows资源管理器中一样。当选择不可见的项目时向上滚动(对于同一个案例,向下滚动)。

是否有任何方便的jQuery插件来处理这个对我?

编辑2: 找出了一些事情,并确定了一个更大的问题。

现在我正在使用名为scrollTo的jQuery插件。我可以使用这个插件滚动到我的列表中的一个元素。然而,“滚动”到一个项目意味着它现在是列表中的第一项,这是不可取的行为。在Finder或资源管理器中选择任意数量的项目,并看到当你按住Shift键选择一个不在屏幕外的项目时,它只会向下滚动一个项目的空间值,并且不会使其成为顶层元素。

当然容易修复。 ;)我目前正在跟踪顶部屏幕外的当前元素以及底部屏幕外的列表中当前元素。但是,当用户在完成一些滚动操作后从列表中选择了一个项目时,我目前无法分辨哪些元素只是看不见,造成了僵局。

任何想法? :P

+0

它不是很清楚你想要什么,你可以发布一些你正在尝试使用的html吗? – 2010-08-13 16:34:17

回答

3

从您的问题中不清楚,但如果您在讨论自动滚动页面(或元素)以便某个特定元素位于视口中,则可以尝试scrollTo plugin

$.scrollTo('#something'); // scrolls the whole page so #something is in view 
$('#mydiv').scrollTo('#somethingelse'); // scrolls the (scrollable) div 

编辑:你的问题的更新提供了一个一点更深入地了解你在寻找什么。我不清楚你使用什么方法来实现轮班选择(或者如果你真的扩大了问题的范围,那么要问怎么做)。但是假设你仍然只是在询问关于滚动块的信息,那么当你添加另一个列表项到你的选择时,我会添加一个附加到任何事件(自定义?)的函数中的滚动调用。

例如,假设你触发称为list_expanded自定义事件各选择了一个<li>时间,你可以尝试这样的事:

$(document).ready(function(){ 
    $('ul#mylist').delegate('li','list_expanded', function(){ 
    $(this).scrollTo(); 
    }); 
}); 

很明显,你也可以使用“常规”事件像click取决于您的多选解决方案的工作方式。

+0

非常感谢。任何有关如何使用设置身份证的建议?我想看到某个元素的ID,滚动到该元素,然后取消设置ID。 – bobber205 2010-08-13 16:53:08

+0

你怎么知道你想要滚动到哪个元素?设置和取消设置ID没有意义,因为您首先必须确定要应用ID的元素。您可以使用任何jQuery选择方法来标识元素。 – 2010-08-13 17:12:23

+0

我有我想要滚动到的列表中的哪个位置的索引。我正在尝试使用孩子来获取元素,但它当然不工作。:P – bobber205 2010-08-13 17:16:58

相关问题