1

我有以下列表结构(顺便说一下,这是一个菜单):

<div id="mainmenu"> 
    <ul class="menu">
        <li class="item-435">
        <li class="item-468 active deeper parent">
            <a href="#">News</a>
            <ul>
                <li class="item-469 current active">
                    <a href="/index.php/news/news-topaktuell">Topaktuell</a>
                </li>
                <li class="item-480">
                    <a href="/index.php/news/events">Events</a>
                </li>
            </ul>
        </li>
        <li class="item-476">
        <li class="item-477">
        <li class="item-478">
        <li class="item-479">
    </ul>
</div>

我想click()在第一个上附加一个事件侦听器<li>,以便它显示页面的标题。其他<li>标签也应该有一个click()监听器,但是在这个事件的情况下,标题应该被隐藏;默认情况下显示标题,因此标题应仅显示在主页上(第一个孩子)。

我已经做了什么:

$('#mainmenu .menu li:not(:first-child)').click(function() {
     //hide header
});

$('#mainmenu .menu li:first-child').click(function() {
     //show header
});

但这也会从子列表中选择第一个孩子,这是我不想要的。有什么优雅的方法可以只选择所需的标签吗?

4

2 回答 2

2

尝试

$('#mainmenu .menu > li:not(:first-child)').click(function() {
     //hide header
});

$('#mainmenu .menu > li:first-child').click(function() {
     //show header
});
于 2012-07-26T10:53:17.197 回答
0

希望这是您想要实现的目标?

http://jsfiddle.net/gRoberts/myVs9/

基本上,当您单击 LI 时,您希望其中包含的 UL 显示/隐藏,同时保持您单击的文本可见。

希望有帮助吗?

于 2012-07-26T10:56:26.920 回答