jQuery - "不包含元素"的规则

GST*_*TAR 27 jquery

我想创建一个规则来定位以下a元素:

<ul id="root">
   <li>
      <a href="item.html">Root Menu Item</a>
   </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

但是,如果li元素包含另一个ul元素,则不应该应用,例如:

<ul id="root">
   <li>
      <a href="#">Sub Menu</a>
      <ul>
         <li>
            <a href="item.html">Sub Menu Item</a>
        </li>
      </ul>
   </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我已根据需要创建了事件,但需要它才能处理"根"菜单项.

我知道我只能添加一个id属性来定位所需的元素,但我的客户端安装的菜单插件不容易配置.

use*_*716 43

如果你匹配a这样做:

var result  = $('#root > li:not(:has(ul)) > a');
Run Code Online (Sandbox Code Playgroud)

如果你想允许更深层次的嵌套<ul>元素,并且只想检查以确保只有直接孩子没有<ul>,你可以这样做:

var result  = $('#root > li:not(:has(> ul)) > a');
Run Code Online (Sandbox Code Playgroud)

编辑:

要同时拥有多个选择器,请在引号内用逗号分隔它们:

var result  = $('#root > li:not(:has(> ul)) > a, #someOtherElement');
Run Code Online (Sandbox Code Playgroud)