如何使用jQuery .not()仅在当前级别选择first-child?

时间:2012-07-26 10:50:40

标签: jquery jquery-selectors

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

<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
});

但是这也选择了子列表中的第一个孩子,这是我不想要的。有没有优雅的方法来选择所需的标签?

2 个答案:

答案 0 :(得分:2)

尝试

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

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

答案 1 :(得分:0)

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

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

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

希望有帮助吗?