使用jQuery滚动到菜单中的项目

时间:2016-04-26 15:38:27

标签: jquery html scroll

我有一个菜单,其中包含overflow-y:scroll<ul>元素。打开时,菜单应滚动到当前活动的<li>元素,该元素由尊重的类<li>标记。

菜单目前将被包装到其div中。当用户将鼠标悬停在某个区域时,菜单将弹出并跳转到当前活动的li元素。

<li active>

目前var ScrollToCurrentPageInMenu = function(menu) { var posObject = $("#subnavigation").parent().find("li.active")[0].offsetTop; console.log("posObject: " + posObject); $("#subnavigation").parent().scrollTo(posObject); }; 是错误的。当我使用手动打开的菜单执行跳转并通过Firebug或Firefox查询时,它可以正常工作。

我尝试使用offset()。top或position()。top但它似乎需要比当前方法更多的逻辑。当当前$("#subnavigation").parent().find("li.active")[0].offsetTop;元素未展开且scrollTop向上滚动到远处时,ScrollTo单独工作。

我知道它有点模糊,但我无法发布该项目。

所以我的问题:

  • 有没有更好的方法呢.offsetTop?
  • 是否存在设计错误(使用.offsetTop)?
  • 为什么Firebug或Webconsole会提供不相等的值?

1 个答案:

答案 0 :(得分:0)

我能想到的第一个(粗略)方法是:

如果<li>的高度固定,我会获得.active的索引,并将top属性设置为li_height * li_index * -1

然后将top属性的更改设置为计算值

我确定有更好的解决方案