【问题标题】:Jquery: how to create double .not() statement?Jquery:如何创建双 .not() 语句?
【发布时间】:2013-02-02 10:10:19
【问题描述】:

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

<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属性换成#,但是保留第二、第三个a标签的href属性。

我创建了这个脚本,它适用于第二级uls,但不适用于第三级。

$("#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='#'

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

【问题讨论】:

    标签: javascript jquery jquery-selectors attributes


    【解决方案1】:

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

    #menu > ul > li > a
    

    【讨论】:

    • 对不起,我可能遗漏了一些东西,但是当我尝试它时,这给了我相同的结果。你能再推断一下吗?
    • 它似乎工作,但也许你使用不同:jsfiddle.net/LBb6B/1
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多