0
$('.navigation a.prev').on('click', function(){
    if(!$("#menu ul li.active").length){
        return false;
    }

    if($("#menu ul li.active").prev().length){
        if($("#menu>ul>li.active").find('li').last().length && !$("#menu>ul>li.active").find('li.active').length){
            $("#menu ul li.active").find('li').last().children('a').click();
        } else {
            $("#menu ul li.active").prev().children('a').click();
        }
    } else {
        if($("#menu ul li.active").closest('li').prev().length){
            $("#menu ul li.active").closest('li').prev().children('a').click();
        }
    }

    return false;
});


<div class="menu" id="menu">
<ul>
<li class="active"><a href="ajax/2.html" rel="ajax-content">About</a></li>
<li><a href="ajax/4.html" rel="ajax-content">Objectives</a></li>
<li class="sub-menu"><a href="ajax/5.html" rel="ajax-content">**Importance**</a>
<ul class="submenu">
<li><a href="ajax/9.html" rel="ajax-content">Need</a></li>
<li><a href="ajax/13.html" rel="ajax-content">**Benefits**</a></li>
</ul>
</li>
<li class="sub-menu">
<a href="ajax/14.html" rel="ajax-content">District</a>
<ul class="submenu">
<li><a href="ajax/15.html" rel="ajax-content">Perspective</a></li>
<li><a href="ajax/17.html" rel="ajax-content">Example</a></li>
<li><a href="ajax/19.html" rel="ajax-content">Leadership</a></li>
<li><a href="ajax/20.html" rel="ajax-content">**Engaging**</a></li>

</ul>
</li>
</ul>
</div>

有任何想法吗?

我需要能够通过每个菜单项单击上一个按钮。

如果当前菜单在“参与”子菜单上,当它进入透视时我单击上一个,然后单击上一个它跳转“重要性”再次单击上一个它转到“好处”

4

1 回答 1

0

您的代码不起作用,因为您实际上有两个 li元素active分配了类:父菜单项和子菜单项。

此代码应考虑到这一点:

$('.navigation a.prev').on('click', function () {
    var $activeItems = $("#menu ul li.active");
    if (!$activeItems.length) {
        return false;
    }

    var $parentItem = $activeItems.eq(0);
    var $subItem = $activeItems.eq(1);

    var $prevSubItem = $subItem.prev();
    if ($prevSubItem.length) {
        $prevSubItem.children('a').click();
    } 
    else {
        // If there is a sub-item currently selected
        if($subItem.length) {
            $parentItem.children('a').click();
        }
        else {
            var $prevParentItem = $parentItem.prev();
            if($prevParentItem.length) {
                $prevParentItem.find('a').last().click();
            }                
        }
    }

    return false;
});

你可以在这里看到一个例子:http: //jsfiddle.net/rSV45/8/

在示例中,只有向后导航正常工作,但您可以使用类似的方法来处理向前导航。

于 2013-09-09T17:45:30.077 回答