【发布时间】:2011-11-07 03:53:36
【问题描述】:
我正在开发一个导航菜单,标记结构如下,span 元素已添加到 document.ready:-
<ul id="menu">
<li class="menu act">Additional Fixture<span class="active"></span></li>
<li class="menu">list with sub menu
<ul class="sub-menu">
<li class="menu">Option one</li>
<li class="menu">Option two</li>
<li class="menu">Option three</li>
<li class="menu">Option four</li>
<li class="menu">Option five</li>
</ul>
</li>
<li class="menu"">Special Tricast</li>
跨度是绝对定位的,具有设定的宽度和高度,并包含一个箭头图像作为背景。
当用户单击菜单类以将活动跨度移动到所选菜单 (li) 元素后面作为其选择的视觉指示器时,我正在使用 jQuery 为跨度/箭头图像设置动画。
当 active (act) 设置在根 li 时,这可以正常工作,但如果位于列表中的其他任何位置,例如:-
<ul id="menu">
<li class="menu">Additional Fixture<span class="active"></span></li>
**<li class="menu act">list with sub menu</li>**
</ul>
文档加载时箭头的位置正确,但用户单击时箭头未移动到正确的选择。我已经为我的 divLocation 变量尝试了位置和偏移量,我目前正在使用位置,因为即使在根目录下,偏移量也无法工作。
我基本上希望根据用户导航到的页面设置箭头,因此无论列表的长度或位置如何,动画都需要从任何起始位置开始。
我浏览了论坛并尝试了一些方法,但说实话我很难过,非常感谢任何帮助!
下面是动画跨度/箭头图像的 jQuery 代码:-
var divLocation = $(this).position();
$("span.active").animate({
'top': divLocation.top + topOffset,
'left': divLocation.left + leftOffset
}, animationSpeed, "linear", function(){
$(selectedElement).addClass("text-light");
$(selectedElement).fadeTo("100", opacityIn);
});
【问题讨论】:
标签: jquery user-interface menu position jquery-animate