代码之家  ›  专栏  ›  技术社区  ›  bobber205

滚动到列表中的项目

  •  2
  • bobber205  · 技术社区  · 14 年前

    我有一个元素列表,当用户选择项目时,我希望能够将这些元素集中到焦点上。我尝试用jquery对这些对象调用.focus()但没有用。我有什么东西不见了吗?:)

    编辑: 我有一个元素列表。我按住Shift键单击一个开始项目,然后按箭头键继续选择。上下。我真的想让轮班选择像在finder或windows资源管理器中一样工作。当选择不可见的项时向上滚动(对于同一情况向下滚动)。

    有什么方便的jquery插件可以帮我处理这个问题吗?

    编辑2: 发现了一些问题,确定了一个更大的问题。

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

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

    有什么想法吗?P

    1 回复  |  直到 14 年前
        1
  •  4
  •   Ken Redler    14 年前

    你的问题不清楚,但是如果你说的是自动滚动页面(或元素),使一个特定的元素在视区中,你可以尝试 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 ,取决于您的多重选择解决方案的工作方式。