3

我在 s 中有 3 层嵌套菜单<ul>,例如:

<div id="menu">
    <ul>
    <li><a href="somewhere.html">enu Item</a>
      <ul>
        <li><a href="somewhere.html">Menu Item 2</a>
            <ul>
               <li><a href="somewhere.html">Menu Item 3</a></li>
             </ul>
        </li>
      </ul>   
    </li>
    </ul>
</div>

我想用jquery将uls的第一级的href属性替换为#,但保留第2个和第3个a标签的href属性。

我创建了这个脚本,它适用于 2nd level ul,但不适用于第三级。

$("#menu ul li a").not("#ctamenu ul li ul a").attr("href", "#");

我试过这个:

$("#menu ul li a").not("#menu ul li ul a").not("#menu ul li ul li a").attr("href", "#")

但这不起作用 - 第 3 层仍然有href='#'

有没有办法做一个“双重不”的声明?

4

2 回答 2

6

第三层嵌套在您缺少的另一个ul中,但使用子选择器会更容易:

#menu > ul > li > a
于 2013-02-18T02:16:19.270 回答
0

根据您的情况,您可能会发现class="first-level"在第一级锚标记上创建添加很有帮助。然后您可以使用$('.first-level'),因为您的菜单的逻辑变得更加依赖于级别,因此更易于维护。

于 2013-02-18T02:51:22.477 回答