Я работаю над навигационным меню, структура разметки ниже, элемент 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>
The span is positioned absolute with a set width and height and contains an arrow image as the background.
Я использую jQuery для анимации изображения диапазона/стрелки, когда пользователь нажимает на класс меню, чтобы переместить активный диапазон за выбранный элемент меню (li) в качестве визуального индикатора для их выбора.
Это отлично работает, когда 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);
});